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';