多个Where条件

dai*_*dai 3 sql where-clause

无法正确使用此语法:

SELECT DISTINCT id 
FROM metadata 
WHERE (meta_key = 'school' AND meta_value = 'Some School') 
AND WHERE (meta_key = 'hidden' AND meta_value = '1')
Run Code Online (Sandbox Code Playgroud)

它在第4行失败了......

更新: 表格如下:

meta_id - id - meta_key     - meta_value
1         1    school         Some School 1
2         1    hidden         0
3         2    school         Some School 2
4         2    hidden         1
5         3    school         Some School 3
6         3    hidden         0
7         4    school         Some School 4
8         4    hidden         0
9         5    school         Some School 5
10        5    hidden         1
Run Code Online (Sandbox Code Playgroud)

更新:我有一个相关的,扩展在这里行存在和多个在哪里

das*_*ght 5

你不需要一秒钟where,第二个and可能是一个or:

SELECT DISTINCT id 
FROM metadata 
WHERE (meta_key = 'school' AND meta_value = 'Some School') 
OR (meta_key = 'hidden' AND meta_value = '1')
Run Code Online (Sandbox Code Playgroud)

(我认为你想要的原因or是因为否则你会有矛盾条款的结合meta_key = 'school' AND meta_key = 'hidden',这总是错误的).

编辑:为了回应OP关于他试图获得的结果的评论,这里有一个不同的查询:

SELECT DISTINCT m1.id 
FROM metadata m1
join metadata m2 on m1.id = m2.id
WHERE (m1.meta_key = 'school' AND m1.meta_value = 'Some School') 
AND (m2.meta_key = 'hidden' AND m2.meta_value = '1')
Run Code Online (Sandbox Code Playgroud)

现在连词条款不再矛盾,因为它们指的是两个不同的行m1m2.