gpt4 book ai didi

MySQL 将 IN 子句中的值与每个组值匹配

转载 作者:可可西里 更新时间:2023-11-01 08:24:44 27 4
gpt4 key购买 nike

我有以下 MySQL 表:

id   value
1 a
1 b
2 b
2 c
3 c

我想查询此表并获取其组与 MySQL IN 子句中的元素匹配的所有 id。

例如,如果我提供 IN("a", "b", "x", "z"),我想返回 1 因为每一行在 1(第 1 组)中匹配我在子句中提供的值。

如何做到这一点?

最佳答案

如果我理解正确的话,这是一个有趣的问题。

当受 IN () 列表限制时,此方法检查每个 id 的聚合 COUNT() 与总 COUNT () 当完全不受 WHERE 子句限制时,每个 id 的集合。如果这两个计数匹配,那是因为与 id 关联的每个 value 都在您的 IN () 列表中匹配。

SELECT DISTINCT tlimit.id 
FROM
(
-- A subquery to get the *limited* count per id
SELECT id, COUNT(tbl.id) as limitc
FROM tbl
WHERE value IN ('a','b','x','z')
GROUP BY tbl.id
) tlimit
INNER JOIN (
-- A subquery to get the *total* count per id
SELECT id, COUNT(*) AS total FROM tbl GROUP BY id
) tcount
-- Join the total count per id against the limited count
-- so the query only returns rows where they're exactly equal
ON tlimit.id = tcount.id
AND tlimit.limitc = tcount.total

这是实际操作,应该返回一个额外的 id = 4:http://sqlfiddle.com/#!9/c6aa0a/1

关于MySQL 将 IN 子句中的值与每个组值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com