Mysql 选择具有某些值的用户 资料
我需要找出同时具有值Mysql 选择具有某些值的用户 资料,mysql,Mysql,我需要找出同时具有值a和b的用户,这是我的解决方案: name 'chan' value 'a' name 'chan' value 'b' name 'max' value 'a' name 'max' value 'b' name 'tony' value 'a' name 'tony' value 'c' 有更好的方法吗?试试这个。如果每个值的名称不唯一,则需要一个不同的。 例如(计数(不同值)=2) 您的解决方案还可以,但最好写为: SELECT name FROM tableName
a
和b
的用户,这是我的解决方案:
name 'chan' value 'a'
name 'chan' value 'b'
name 'max' value 'a'
name 'max' value 'b'
name 'tony' value 'a'
name 'tony' value 'c'
有更好的方法吗?试试这个。如果每个
值的名称
不唯一,则需要一个不同的
。
例如(计数(不同值)=2
)
您的解决方案还可以,但最好写为:
SELECT name
FROM tableName
WHERE value IN ('a', 'b')
GROUP BY name
HAVING COUNT(*) = 2
一种可能更有效的形式是:
SELECT name
FROM `table`
GROUP BY `name`
HAVING SUM(`value` = 'a') >= 1 AND SUM(`value` = 'b') >= 1;
而且,根据您的数据结构、索引和大小,这也可能是有效的:
SELECT name
FROM `table`
WHERE value in ('a', 'b')
GROUP BY `name`
HAVING COUNT(DISTINCT value) = 2;
我更喜欢使用groupby
和having
的方法,因为它们可以推广到更多样化的条件集
SELECT name
FROM `table`
WHERE value in ('a', 'b')
GROUP BY `name`
HAVING COUNT(DISTINCT value) = 2;
select ta.name
from table ta join
table tb
on ta.name = tb.name and ta.value = 'a' and tb.value = 'b';