2012-12-09 58 views
1

我有以下表格:MySQL的衝突的where子句

users: id, username, password, created, modified 
posts: id, user_id, message, created, modified 

我想運行一個查詢獲取了今天創建的最後5個(以及海報的用戶名)。當我運行以下查詢:

SELECT users.username, posts.* 
FROM postsLEFT OUTER JOIN users ON (posts.user_id=users.id) 
WHERE (DATE(`posts.created`) = DATE(NOW())) 
ORDER BY posts.created DESC 
LIMIT 5 

我得到的消息:

在未知列'posts.created 'where子句'

這很好,我明白在查詢的其他部分之前運行。於是我嘗試此查詢:

SELECT users.username, posts.* 
FROM postsLEFT OUTER JOIN users ON (posts.user_id=users.id) 
WHERE (DATE(`created`) = DATE(NOW())) 
ORDER BY posts.created DESC 
LIMIT 5 

但當然,我得到的消息:

列在where子句是模糊的「創造」


如何改變任何建議查詢所以沒有任何問題?

回答

0

通過將items.created包裝在引號中,它將被解釋爲名爲「items.created」的列,而不是從items表中創建的列。以下應該工作。

SELECT users.username, items.* 
FROM items LEFT OUTER JOIN users ON (items.user_id=users.id) 
WHERE (DATE(items.created) = DATE(NOW())) 
ORDER BY items.created DESC 
LIMIT 5