Select
單個 AND 運算符和多個 OR 運算符
我想選擇一個 user_id 為 1 且 category_id 可以是 1、2 或 3 的 record_id。每條
SELECT
語句都應返回 1 條記錄。在此處查看我的範例表:
我如何在 SQL 中做到這一點?我試過這個 SQL 語句:
SELECT record_id FROM tbl_people WHERE category_id=1 OR category=id=2 OR category_id=3 OR category_id=4 OR category_id=5 OR category_id=6 AND user_id = 1;
…但它不起作用。
這是因為在 SQLite 中,
AND
運算符的優先級高於OR
(請參閱此SQLite 文件頁面上的運算符部分)這意味著 SQLite 首先計算
category_id=6 AND user_id = 1
表達式,然後將OR
其結果與所有其他category_id
條件一起計算。因此,您的查詢將返回
category_id
1、2、3、4 或 5 或category_id
6 和user_id
1 的所有記錄。您應該添加括號以強制
OR
首先評估 s:SELECT record_id FROM tbl_people WHERE ( category_id=1 OR category_id=2 OR category_id=3 ) AND user_id = 1;
或者,您可以使用 SQL
IN
運算符使其更簡潔:SELECT record_id FROM tbl_people WHERE category_id IN (1, 2, 3) AND user_id = 1;
另外,請注意您有一個錯字:在您的
WHERE
子句中有一個category=id
,它可能應該是category_id
.**更新:**這是一個嘗試查詢的連結:http ://www.sqlfiddle.com/#!7/d7ad3/1