Mysql SQL-AND语句
我有表1: 我需要知道谁的枚举谁知道HTML和访问只。这怎么可能呢 我试过:Mysql SQL-AND语句,mysql,sql,Mysql,Sql,我有表1: 我需要知道谁的枚举谁知道HTML和访问只。这怎么可能呢 我试过: SELECT enum FROM table1 WHERE package="ACCESS" AND package="HTML" 但它没有给我任何答案,我确信应该有 提前感谢您需要比较不同行中的值,使其成为集合内集合子查询。以下是一个使用group by并具有以下功能的解决方案: having子句中的每个条件都计算每个值的匹配数。因为两者都需要,>0确保枚举至少有一个 请注意,我已将enum放在反引号中。Enu
SELECT enum
FROM table1
WHERE package="ACCESS" AND package="HTML"
但它没有给我任何答案,我确信应该有
提前感谢您需要比较不同行中的值,使其成为集合内集合子查询。以下是一个使用group by并具有以下功能的解决方案: having子句中的每个条件都计算每个值的匹配数。因为两者都需要,>0确保枚举至少有一个
请注意,我已将enum放在反引号中。Enum是MySQL中的一个关键字。即使如此,也不需要反引号,因为它是解析器允许的少数没有反引号的单词之一。尽管如此,在这个上下文中看到这个单词看起来还是很奇怪,因此出现了倒勾。您应该阅读表并按枚举分组,然后查看是否得到了该枚举所需的所有包而没有其他包
select enum
from table1
group by enum
having sum(package in ('ACCESS', 'HTML')) = 2
and sum(package not in ('ACCESS', 'HTML')) = 0
and count(*) = 2;
HAVING子句中的三个条件之一是多余的。删除您最喜欢的内容:-
该查询使用MySQL功能,其中true表达式的值为1,false表达式的值为0,因此您可以使用SUM来计算true表达式。是,但是。。。。我需要的人谁只知道HTML和访问。如果他知道一个,那还不够/您希望枚举只包含HTML和ACCESS是什么意思?是否只想返回两个枚举,而不返回其他枚举?如果是这样,那么您的示例数据将不匹配。可能的话,它不是保留字!?!为什么要包括多余的条件?@bluefeet:我想展示这些选项。使用三个条件中的哪两个并不重要。这是品味的问题。但考虑删除哪一个甚至有助于理解这些表达式的实际作用:-
select enum
from table1
group by enum
having sum(package in ('ACCESS', 'HTML')) = 2
and sum(package not in ('ACCESS', 'HTML')) = 0
and count(*) = 2;