0

我根本不是 sql 专家,但为什么这个查询返回错误?

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 的用户名分组?

4

3 回答 3

2

你不应该有 2 个 WHERE 语句

编辑:

还 - 你应该加入经理表

于 2012-07-18T11:42:19.980 回答
2

尝试

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将始终检索 NOT NULL 和用户名的常用值

  • 我假设两个表具有相同的列名。如果两个表具有不同的列名,则更改

    USING(username)ON h.column_name = s.column_name

于 2012-07-18T11:44:16.420 回答
1

你有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
    ^^^^^
于 2012-07-18T11:43:28.713 回答