gpt4 book ai didi

mysql - SQL 以在输出中保留编辑功能的方式选择两个值相同的行

转载 作者:可可西里 更新时间:2023-11-01 09:00:55 24 4
gpt4 key购买 nike

如果答案非常明显,我深表歉意,但尽管进行了大量研究并尝试了不同的命令,但我还是没有找到解决方案(我更像是词典编纂者,而不是开发人员)。

我们有一个表格,由于各种原因,该表格的某些行在关键单元格中具有重复值。模型看起来像这样:

Unique_ID   | E_ID   | Date       | User_ID    | V_value
1 | 500 | 2012-05-12 | 23 | 3
2 | 501 | 2012-05-12 | 23 | 3
3 | 501 | 2012-05-13 | 23 | 1
4 | 502 | 2012-05-13 | 23 | 2
5 | 503 | 2012-05-12 | 23 | 2
6 | 7721 | 2012-05-22 | 8845 | 3
7 | 7722 | 2012-05-22 | 8845 | 3
8 | 7722 | 2012-05-22 | 8845 | 3
9 | 7723 | 2012-05-22 | 8845 | 3

所以我需要作为输出的行是 Unique_ID 2 & 3 和 7 & 8,因为它们在 E_ID 和 User_ID 字段方面是相同的。其他字段的值与我们的问题无关。所以我想要的是这个,理想情况下:

Unique_ID   | E_ID   | Date       | User_ID    | V_value
2 | 501 | 2012-05-12 | 23 | 3
3 | 501 | 2012-05-13 | 23 | 1
7 | 7722 | 2012-05-22 | 8845 | 3
8 | 7722 | 2012-05-22 | 8845 | 3

出于处理数据的原因,我需要输出与编辑功能一起出现(特别是复选框或至少是删除功能),因为我需要手动浏览表格并丢弃一个或另一个根据无法使用 SQL 命令确定的决策/条件进行复制。

我最接近的是这个:

SELECT *
FROM ( SELECT E_ID, User_ID, COUNT(Unique_ID)
AS V_Count
FROM TableName
GROUP BY E_ID, User_ID
ORDER BY E_ID )
AS X
WHERE V_Count > 1
ORDER BY User_ID ASC, E_ID ASC

这确实给了我重复的行,但因为我正在创建 V_Count 列来给我重复的行:

E_ID   | User_ID    | V_Count
501 | 23 | 2
7722 | 8845 | 2

输出没有给我所需的删除选项 - 它说这是因为没有唯一 ID,我明白了,因为它将它们放在同一行中。有没有办法在不丢失 Unique_ID 的情况下执行此操作,这样我就不会丢失删除功能?

最佳答案

如果有多行,您可以使用聚合来检查给定的 user_id 和 e_id。然后将它与您的表连接起来以获得结果中的所有列。

select t1.*
from tablename t1
join (
select e_id,
user_id
from tablename
group by e_id,
user_id
having count(*) > 1
) t2
on t1.e_id = t2.e_id
and t1.user_id = t2.user_id

使用 USING 子句可以更清楚地表达为:

select *
from tablename t1
join (
select e_id,
user_id
from tablename
group by e_id,
user_id
having count(*) > 1
) t2 using (e_id, user_id)

关于mysql - SQL 以在输出中保留编辑功能的方式选择两个值相同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42613797/

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