精确匹配中的sql查询
假设我有下表精确匹配中的sql查询,sql,Sql,假设我有下表 name | color ------------- jon blue jon black jon red bill blue bill red jack blue .... 我想运行一个查询来获取所有只有颜色=蓝色和红色的名称 所有名字都是蓝色的qeyry也是一样,只有蓝色没有黑色,没有红色 我试过下面的方法 select name, color from table where color in ('blue', 'red') group by
name | color
-------------
jon blue
jon black
jon red
bill blue
bill red
jack blue
....
我想运行一个查询来获取所有只有颜色=蓝色和红色的名称
所有名字都是蓝色的qeyry也是一样,只有蓝色没有黑色,没有红色
我试过下面的方法
select name, color from table where color in ('blue', 'red')
group by name, color
但它给了我比我预期的更多的结果。。。
有什么想法吗
谢谢 让我们试试这个查询:
select name
from tbl
where color in ('blue','red')
and not exists (select * from tbl t2
where t2.name=tbl.name and t2.color NOT IN ('blue','red'))
group by name
having count(distinct color) = 2
SELECT name, color
FROM table1
WHERE name IN
(
SELECT name
FROM table1 t1
WHERE color IN ('blue', 'red')
AND NOT EXISTS
(
SELECT *
FROM table1 t2
WHERE t1.name = t2.name
AND t2.color NOT IN ('blue', 'red')
)
GROUP BY name
HAVING COUNT(DISTINCT color) = 2 --to be sure only red won't be accepted
UNION
SELECT name
FROM table1 t1
WHERE color = 'blue'
AND NOT EXISTS
(
SELECT *
FROM table1 t2
WHERE t1.name = t2.name
AND t2.color <> 'blue'
)
)
ORDER BY name, color
从表格中选择名称、颜色,其中“蓝色”、“红色”和“随机<0.5”中的颜色按名称分组,颜色将为您提供较少的颜色。西班牙宗教法庭!谢谢你的帮助。真的必须考虑改变那张桌子的结构。对于一个简单的搜索来说,这个查询太大了。是的,我同意你的说法,如果这个查询需要多次调用的话