0

これは私が実行しているSQLコードです:

SELECT * FROM documents WHERE cat=1 OR cat=3 AND date>=2001 AND date<=2003 AND run <90 ORDER BY RAND() LIMIT 0,10

これは、2001 年から 2003 年の日付の間の cat 1 または cat 3 からのすべてのエントリを返す必要があります。ここで、run は 90 未満で、結果は 10 に制限されています。

問題は、日付と実行パラメーターを無視することです。すべてを個別に実行すると機能しますが、上記のように一緒にすると、任意の日付/実行で猫 1 と 3 から 10 個のランダムなエントリしか返されません。

理由はわかりますか??

ありがとう。

4

2 に答える 2

3

ORそのようなステートメントの周りに括弧が必要な場合があります。

SELECT * FROM documents WHERE (cat=1 OR cat=3) AND date>=2001 AND date<=2003 AND run <90 ORDER BY RAND() LIMIT 0,10
于 2013-06-09T14:04:32.093 に答える
2
  SELECT *
    FROM documents
   WHERE (cat=1 OR cat=3)
     AND date>=2001 
     AND date<=2003
     AND run <90 
ORDER BY RAND()
   LIMIT 0,10
于 2013-06-09T14:04:39.020 に答える