mysql命令根据条款
问题描述:
我得到一个错误,指出: “未知列‘story2.time’‘以条款’”mysql命令根据条款
我的SQL语句是:
mysql_query("SELECT headline, story2.time FROM story2 WHERE username='Michael' UNION
SELECT headline, story2.time FROM story2 JOIN subscriptions WHERE subscriptions.subpaperid = story2.artnewsid AND subscriptions.papernameurl = story2.papernameurl AND subscriptions.username = 'Michael' UNION
SELECT headline, story2.time FROM story2 JOIN bookmark WHERE bookmark.writername = story2.username AND bookmark.articleid = story2.random AND bookmark.username = 'Michael'
ORDER BY story2.time DESC LIMIT 0,25") or die(mysql_error());
上做任何帮助下面的查询工作将不胜感激。谢谢!
答
您不能在order by
中使用table
别名。所以,只是做:
SELECT headline, story2.time
FROM story2
WHERE username='Michael'
UNION
SELECT headline, story2.time
FROM story2 JOIN
subscriptions
WHERE subscriptions.subpaperid = story2.artnewsid AND subscriptions.papernameurl = story2.papernameurl AND subscriptions.username = 'Michael'
UNION
SELECT headline, story2.time
FROM story2 JOIN
bookmark
WHERE bookmark.writername = story2.username AND bookmark.articleid = story2.random AND bookmark.username = 'Michael'
ORDER BY time DESC
LIMIT 0, 25
表名是唯一的范围在每union
子查询。顺便说一下,除非您故意要承担删除重复项的开销,否则您应该使用union all
。
+0
非常感谢! – stevieD
答
联合结果的列名设置为时间,所以按时间排序。
您不能使用'union'按顺序引用'story2' - 它不再存在。只要删除它 - '按时间顺序desc ...' – sgeddes