gpt4 book ai didi

MySQL select 查询对同一列的多个条件进行 AND 运算

转载 作者:行者123 更新时间:2023-11-29 12:24:20 25 4
gpt4 key购买 nike

我有下面的测试表,表中包含以下行。

table: test_set(id (pk), pid int, fc int, fl int)

pid fc fl
1 7 30
1 8 31
1 9 35
2 7 39
2 8 40

现在如果我运行

SELECT pid FROM test_set WHERE fl=30 OR fl=35 GROUP BY pid;
#Result :
pid
---
1

正如预期,但如果我想运行

SELECT pid FROM test_set WHERE fl=30 AND fl=35 GROUP BY pid;
#Result :
result set (0) # Nothing matched!

这也符合预期,但我想超越预期。我的逻辑是 fl=30fl=35 都有 pid=1 的共同点,即当它们相交时,它们会产生 pid=1

因此,具体来说,我需要 fl 列的多个值的结果,这些值具有一个或多个共同的pid

我已经读过这篇文章 this并在那里发表了评论。

最佳答案

关于:

SELECT pid, COUNT(DISTINCT fl) AS count, GROUP_CONCAT(DISTINCT fl) list
FROM test_set
GROUP BY pid HAVING count > 1;

输出:

+------+-----------+------------------+
| pid | count | list |
+------+-----------+------------------+
| 1 | 3 | 30,31,35 |
| 2 | 2 | 39,40 |
+------+-----------+------------------+

给定两个 fl 值:

SELECT pid, COUNT(DISTINCT fl) AS count
FROM test_set
WHERE fl IN (30, 35)
GROUP BY pid HAVING count = 2;

输出:

+------+-------+
| pid | count |
+------+-------+
| 1 | 2 |
+------+-------+

给定三个 fl 值:

SELECT pid, COUNT(DISTINCT fl) AS count
FROM test_set
WHERE fl IN (30, 31, 35)
GROUP BY pid HAVING count = 3;

输出:

+------+-------+
| pid | count |
+------+-------+
| 1 | 3 |
+------+-------+

最好在 pidfl 上建立索引。

关于MySQL select 查询对同一列的多个条件进行 AND 运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28567903/

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