Mysql 仅在没有行匹配的情况下选择
我需要一个能够在名称“未分类”时伪装的查询 乙二醇 我需要一个查询来获取Jane Doe,因为所有类别中没有选项=1。Mysql 仅在没有行匹配的情况下选择,mysql,sql,select,Mysql,Sql,Select,我需要一个能够在名称“未分类”时伪装的查询 乙二醇 我需要一个查询来获取Jane Doe,因为所有类别中没有选项=1。 不幸的是,由于所有的名字都有一个0至少1个类别,我最终会提取每个人 SELECT DISTINCT Fullname FROM tablename WHERE fullname NOT IN ( SELECT a.FullName FROM tablename a WHER
不幸的是,由于所有的名字都有一个0至少1个类别,我最终会提取每个人
SELECT DISTINCT Fullname
FROM tablename
WHERE fullname NOT IN
(
SELECT a.FullName
FROM tablename a
WHERE a.option = 1
)
LEFT JOIN
SELECT DISTINCT aa.Fullname
FROM tablename aa
LEFT JOIN
(
SELECT a.FullName
FROM tablename a
WHERE a.option = 1
) bb ON aa.Fullname = bb.Fullname
WHERE bb.Fullname IS NULL
JOIN
而不是notin
。为了获得更好的性能,请在列全名
上定义一个索引
LEFT JOIN
SELECT DISTINCT aa.Fullname
FROM tablename aa
LEFT JOIN
(
SELECT a.FullName
FROM tablename a
WHERE a.option = 1
) bb ON aa.Fullname = bb.Fullname
WHERE bb.Fullname IS NULL
我更喜欢使用
JOIN
而不是notin
。为了获得更好的性能,请在列全名上定义一个索引类似的内容,可能吗?(可能不是最有效的,但应该有效)
也许是这样的?(可能不是最有效的,但应该有效)
这里有另一种方法
SELECT `fullName`
FROM `your_table`
GROUP BY `fullName`
HAVING SUM(`option`)=0
这里有另一种方法
SELECT `fullName`
FROM `your_table`
GROUP BY `fullName`
HAVING SUM(`option`)=0