2015-11-04 59 views
1

我得到一个错误,指出: “未知列‘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()); 

上做任何帮助下面的查询工作将不胜感激。谢谢!

+0

您不能使用'union'按顺序引用'story2' - 它不再存在。只要删除它 - '按时间顺序desc ...' – sgeddes

回答

2

您不能在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

1

联合结果的列名设置为时间,所以按时间排序。