mysql冲突的where子句

时间:2012-12-09 00:57:37

标签: mysql where-clause ambiguity

我有以下表格:

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

我收到消息:

  

'where子句'中的未知列'posts.created'

哪个好,我明白在查询的其他部分之前运行的地方。那么我尝试这个查询:

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子句中“创建”的列是不明确的


有关如何更改查询的任何建议,以便没有任何问题吗?

1 个答案:

答案 0 :(得分: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