gpt4 book ai didi

mysql - 在mysql中没有查询?

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:52 24 4
gpt4 key购买 nike

如果我有这样一张表:

 id      column1    column2 
1 A A
1 B B
1 C A
2 B A
2 B C
2 C C
3 D C
3 B D
3 E D

我想要的是计算不包含 column1=A 或 column2=A 的不同 ID。

在我的表中,count(distinct(id)) 应该是 1,因为 id 1 有一行包含 column1=A, column2=A 和 id 2, column2=A。所以 id 3 是行中唯一不包含 column1 != A 或 column2 != A 的 id。

我应该使用哪个查询?

最佳答案

这可能对你有帮助;)

SQL Fiddle

MySQL 5.6 模式:

CREATE TABLE SO_TEST (
id int,
column1 char(2),
column2 char(2)
);

INSERT SO_TEST VALUES
(1,'A','A'),
(1,'B','B'),
(1,'C','A'),
(2,'B','A'),
(2,'B','C'),
(2,'C','C'),
(3,'D','C'),
(3,'B','D'),
(3,'E','D');

查询 1:

SELECT COUNT(1) AS RESULT
FROM (
SELECT id, GROUP_CONCAT(CONCAT(CONCAT(column1,','),column2)) STR FROM SO_TEST GROUP BY id
) TMP
WHERE FIND_IN_SET('A',TMP.STR) = 0

好吧,让我们解释一下。

  • 在子查询中,我通过组 ID 和 concat 检索了所有 column1column2 值,它将返回我们关注结果,您可以在 sqlfiddle 中尝试。

    +----+-------------+| id | STR         |+----+-------------+ | 1  | A,A,B,B,C,A | | 2  | B,A,B,C,C,C | | 3  | D,C,B,D,E,D |+----+-------------+
  • So In main query, I used FIND_IN_SET(param1, param2) in WHERE clause, this function will return us the index of param1 in param2(param2's every element must be separated by a comma), and if param1 not in param2, return 0, so we could be clear about WHERE clause.

  • At last count(1) will help us get what we want.

Results:

| RESULT |
|--------|
| 1 |

关于mysql - 在mysql中没有查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37044420/

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