无法正确使用此语法:
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)
更新:我有一个相关的,扩展在这里行存在和多个在哪里
你不需要一秒钟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)
现在连词条款不再矛盾,因为它们指的是两个不同的行m1和m2.