gpt4 book ai didi

mysql - 从 SQL 查询中删除重复项

转载 作者:太空宇宙 更新时间:2023-11-03 12:12:27 25 4
gpt4 key购买 nike

我正在尝试创建一个不会返回具有相同 ID 的行的 SQL 查询。我还想指定一个主行,以便在两行具有相同 ID 的情况下,将返回主行。如果未指定主行,我想返回第一行。

这是我要查询的数据库的示例。

+----+---------+-------+
| id | primary | label |
+----+---------+-------+
| 1 | Y | A |
| 1 | | B |
| 2 | | C |
| 2 | | D |
| 3 | | E |
+----+---------+-------+

这是我想要达到的结果的一个例子

+----+---------+-------+
| id | primary | label |
+----+---------+-------+
| 1 | Y | A |
| 2 | | C |
| 3 | | E |
+----+---------+-------+

我一直在尝试使用 select distinct,但我不确定要解决这个问题的方向。任何帮助是极大的赞赏。谢谢!

最佳答案

在您的情况下,子查询比 DISTINCT 更合适。

试试下面的。这是它获得所需结果的演示:http://sqlfiddle.com/#!2/97fdd3/1/0

顺便说一句,当 ID 没有“主要”时,这将为该 ID 选择最低的标签值。正如其他人所说,这比“数据库中的顺序”更可靠。

select *
from tbl t
where t.label = (select x.label
from tbl x
where x.primary = 'Y'
and x.id = t.id)
or (not exists
(select 1
from tbl x
where x.primary = 'Y'
and x.id = t.id) and
t.label = (select min(x.label) from tbl x where x.id = t.id))

关于mysql - 从 SQL 查询中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23665851/

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