gpt4 book ai didi

mysql - 如何根据一个或多个结果集中的列删除重复项

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

我有两个来自同一张表的结果集,格式如下:

|    id    |    name    |    age    |
-------------------------------------
| 1 | John | 12 |
| 2 | Jim | 23 |
| 3 | Joel | 54 |
| 4 | Jane | 12 |

如果我根据年龄间隔创建结果集,并且一行在 1 个或多个结果集之间重复出现,我如何根据 name 列有效地过滤这些结果集?结果集的数量是 1..x

我应该:循环遍历集合、组合集合并同时进行过滤,还是可以直接使用 SQL 进行查询并删除重复项?

因为我使用 peewee 我的查询是例如:

result_1 = Users.select().where(Users.age > 10)
result_2 = Users.select().where(Users.age > 20)

更新:

实际表中没有重复项,只有结果集,我希望要么制作一个没有重复项的结果集,要么将它们全部组合起来而不重复。

最佳答案

如果我没理解错的话,这就是UNION开箱即用:

SELECT ID, Name, Age
FROM Users
WHERE Age > 10

UNION

SELECT ID, Name, Age
FROM Users
WHERE Age > 20;

您可以进行多项选择。要求是选择必须全部返回相同数量的列,并且类型兼容。

SqlFiddle here

编辑:
如果您需要额外过滤,请将联合包装在派生表中:

SELECT *
FROM
(
SELECT ID, Name, Age
FROM Users
WHERE Age > 10

UNION

SELECT ID, Name, Age
FROM Users
WHERE Age > 20
) X
WHERE x.Name LIKE 'Jo%';

Updated Fiddle

关于mysql - 如何根据一个或多个结果集中的列删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22891579/

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