MySQL中的子查询WHERE子句使用
问题描述:
我不是一个sql guru,但为什么这个查询返回错误?MySQL中的子查询WHERE子句使用
SELECT username FROM history as h
WHERE username IS NOT NULL AND updated>1342555201 AND updated<1342641599
AND WHERE (SELECT status FROM managers WHERE username=h.username) > 0
如何在一个查询中使用包含状态的第二个表上的子查询将状态> 0的用户名分组?
答
尝试
SELECT h.username FROM history h
INNER JOIN status s USING(username)
WHERE h.updated BETWEEN 1342555201 AND 1342641599
GROUP BY h.username
HAVING s.status > 0
注:
-
INNER JOIN
永远retrive NOT NULL和用户名的共同价值 -
我假定这两个表具有相同的列名 .if bot^h的表有不同的列名,然后更改
USING(username)
与ON h.column_name = s.column_name
答
你不应该有2 WHERE语句
编辑:
也 - 你应该加入的经理表
答
你有一个where
太多。
SELECT username FROM history as h
WHERE username IS NOT NULL AND updated>1342555201 AND updated<1342641599
AND WHERE (SELECT status FROM managers WHERE username=h.username) > 0
^^^^^
哎呀。我很无礼。谢谢 – moogeek 2012-07-18 11:44:57
SELECT username FROM history as h INNER JOIN managers m USING(username) WHERE AND m.status> 0 AND h.updated BETWEEN 1342555201 AND 1342641599 – Randy 2012-07-18 11:47:38
我无法加入,因为在真正的db中,我将有两列用不同的名字('username'和'manager') – moogeek 2012-07-18 11:48:09