我想选择一个 user_id 为 1 和 category_id 的 record_id 可以是 1、2 或 3。每个 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;
Run Code Online (Sandbox Code Playgroud)
......但它不起作用。
这是因为在 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;
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 SQLIN运算符使其更简洁:
SELECT record_id
FROM tbl_people
WHERE category_id IN (1, 2, 3)
AND user_id = 1;
Run Code Online (Sandbox Code Playgroud)
另外,请注意您有一个错字:在您的WHERE子句中有一个category=id,它可能应该是category_id。
更新:这是一个尝试查询的链接:http : //www.sqlfiddle.com/#!7/d7ad3/1
| 归档时间: |
|
| 查看次数: |
3031 次 |
| 最近记录: |