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那么,您需要一个完全不同的查询。我刚刚编辑了我的答案。