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

ステータスを含む2番目のテーブルのサブクエリを使用して、1つのクエリでステータス> 0のユーザー名をグループ化する方法は?

4

3 に答える 3

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常にNOTNULLとユーザー名の一般的な値を取得します

  • 両方のテーブルの列名が同じであると想定しています。両方のテーブルの列名が異なる場合は、変更してください。

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

于 2012-07-18T11:44:16.420 に答える
2

2つのWHEREステートメントは使用しないでください

編集:

また、マネージャーテーブルに参加する必要があります

于 2012-07-18T11:42:19.980 に答える
1

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 に答える