Sql 多个Where条件

Sql 多个Where条件,sql,where-clause,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') 它在四号线失败了 更新: 表如下所示: meta_id - id - meta_key - meta_value 1 1 school

无法正确使用此语法:

SELECT DISTINCT id 
FROM metadata 
WHERE (meta_key = 'school' AND meta_value = 'Some School') 
AND WHERE (meta_key = 'hidden' AND meta_value = '1')
它在四号线失败了

更新: 表如下所示:

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

更新:我这里有一个相关的扩展您不需要第二个
,其中
,第二个
可能是

SELECT DISTINCT id 
FROM metadata 
WHERE (meta_key = 'school' AND meta_value = 'Some School') 
OR (meta_key = 'hidden' AND meta_value = '1')
(我认为你想要一个
的原因是,否则你会有一个矛盾的连词
meta_key='school'和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')

现在连词从句不再相互矛盾,因为它们指的是两个不同的行
m1
m2

不能有多个WHERE从句。我想你的意思是

SELECT DISTINCT id 
FROM metadata 
WHERE (meta_key = 'school' AND meta_value = 'Some School') 
    OR (meta_key = 'hidden' AND meta_value = '1')

该死,@dasblinkenlight击败了我:)有好几行的id相同,但学校和隐藏密钥不同,我需要按名称查找学校,并找出它的名称hidden@daidai那么,您需要一个完全不同的查询。我刚刚编辑了我的答案。