gpt4 book ai didi

mysql - 不返回重复的 mysql 行

转载 作者:行者123 更新时间:2023-12-01 00:17:15 25 4
gpt4 key购买 nike

假设我有一个包含两列 begin_timestampimages 的表格。

首先我做这个声明

SELECT images 
FROM myTable
WHERE begin_timestamp < 1546646400 && images != 'default.png';

这将返回一个字符串列表,如:

'123.jpg'
'abc.jpg'
'test.jpg'

我想要的第二个是检查该列表中的一个或多个项目是否在孔表中有重复项。如果是,将该字符串踢出列表。就像表中的另一行包含 123.jpg 作为图像值一样,我只想要像

这样的列表
[abc.jpg, test.jpg]

我现在的问题是,如何将第一步和第二步合并到一条 mySQL 语句中?

最佳答案

您可以使用 GROUP BY 实现此目的。

首先,让我们像上面那样进行选择:

SELECT images
FROM myTable
WHERE begin_timestamp < 1546646400 AND images != 'default.png'
GROUP BY images;

现在,因为我们已按图像 分组,所以我们可以访问aggregate functions。 .我们可以在查询末尾像这样添加所需的过滤器:

HAVING COUNT(images) = 1

请注意,因为我们已按 images 分组,所以现在我们只能在 SELECT 部分直接查询。如果你想选择任何其他字段,你也需要通过聚合函数来完成,例如SELECT images, MIN(some_field).或者,如果 images 是主键,则在子查询或连接中使用它。


如果您需要在应用WHERE 过滤条件之前删除重复项,您可以使用这样的子查询:

SELECT images FROM (
SELECT images, MIN(begin_timestamp) as begin_timestamp
FROM myTable
GROUP BY images
HAVING COUNT(images) = 1)
WHERE begin_timestamp < 1546646400 AND images != 'default.png';

关于mysql - 不返回重复的 mysql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54040886/

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