mysql之SQL之选择其中参数 A 是多个值之一且参数 B 相等

java哥 阅读:29 2024-04-17 11:32:04 评论:0

假设我们有一个包含 A 列和 B 列的表格。

我需要选择行,其中参数 A 是设置的 ARRAY 值之一,并且这些行的参数 B 相等,而没有其他行的参数 A 不在 ARRAY 中,但它的行相等参数 B 到 ARRAY 中的参数。

例如我们有表:

John    1 
Andrew  1 
John    2 
Paul    2 
John    3 
Andrew  3 
Paul    3 

并且我需要根据 ARRAY = (John, Andrew) 选择行,所以结果应该只有前两行(参数 A 都在 ARRAY 中,参数 B 相等并且没有其他行具有相同的参数 B ):

John    1 
Andrew  1 

你能帮我解决那个 (MySQL) 的 SQL SELECT 语法吗?

PS:ARRAY 中的参数数量可以变化。

PS2:结果应该只有行,其中存在 ARRAY 中的每个项目。因此,例如,如果 ARRAY = (John, Andrew, Paul),结果应该仅为:

John    3 
Andrew  3 
Paul    3 

请您参考如下方法:

SELECT * 
FROM YourTable 
WHERE a IN ('John', 'Andrew', 'Paul') 
AND b NOT IN ( 
    SELECT b 
    FROM YourTable 
    WHERE a NOT IN ('John', 'Andrew', 'Paul') 
) AND b IN ( 
    SELECT b 
    FROM YourTable 
    WHERE a IN ('John', 'Andrew', 'Paul') 
    GROUP BY b 
    HAVING COUNT(*) = 3) 

COUNT(*) 限定符应与集合中的元素数相同。这假设名称在特定的 b 值中不重复。

DEMO

这实际上是将您的描述逐字翻译成 SQL。


标签:mysql
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号