gpt4 book ai didi

Mysql - 如果字段匹配则根据条件进行分组根据其他字段进行选择

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

我的 table 是

id name active gid
38 abc 1 2
49 cba 1 1
51 dfg 1 1
23 gst 1 2
54 dfg 1 2
58 gst 1 1

在一个简单的情况下,我使用了这个查询

SELECT  id, name FROM test_table WHERE (gid = 2 OR gid = 1) and active = 1 group by name

但我的要求是,如果表中包含多条同名记录,则结果中应包含 gid = 2 的记录。

如果有超过1条同名且gid=2的记录,任何随机记录都可以。如果只有 gid=1 的同名记录,情况也是如此。

 id     name    
38 abc
49 cba
23 gst
54 dfg

最佳答案

SQL Fiddle

MySQL 5.5 架构设置:

CREATE TABLE test_table
(`id` int, `name` varchar(3), `active` int, `gid` int)
;

INSERT INTO test_table
(`id`, `name`, `active`, `gid`)
VALUES
(38, 'abc', 1, 2),
(49, 'cba', 1, 1),
(51, 'dfg', 1, 1),
(23, 'gst', 1, 2),
(47, 'gst', 1, 2),
(54, 'dfg', 1, 2),
(58, 'gst', 1, 1)
;

查询 1:

SELECT min(id), t1.name
FROM test_table t1
INNER JOIN
(SELECT name, max(gid) as gid
FROM test_table
WHERE gid in (1,2) and active = 1
group by name) t2 ON t1.name = t2.name AND
t1.gid = t2.gid
group by t1.name

<强> Results :

| min(id) | name |
|---------|------|
| 38 | abc |
| 49 | cba |
| 54 | dfg |
| 23 | gst |

关于Mysql - 如果字段匹配则根据条件进行分组根据其他字段进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28593341/

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