gpt4 book ai didi

mysql - 选择一列中具有相似值的行

转载 作者:行者123 更新时间:2023-11-29 16:42:43 25 4
gpt4 key购买 nike

我有一个名为 trades 的表,并且有一个字段 session ID。该表具有具有相似 session ID 的特定行。某些行具有相似 session ID 的原因是,当进行交易时,它需要一个现有的 session ID。

我现在想要选择具有相似 session ID 的行并对其执行某些操作。

这是我的第一个查询,列出了所有行

SELECT * FROM trades 
where trade_session_status="DONE" AND
trade_profit_worker_status="UNDONE"

我也尝试过这个查询

SELECT * FROM trades 
where trade_session_status="DONE" AND
trade_profit_worker_status="UNDONE"
order BY(session_id)

我查看了不同的查询并提出了这个查询

SELECT DISTINCT session_id,id 
FROM trades
WHERE trade_session_status="DONE" AND
trade_profit_worker_status="UNDONE"
ORDER BY session_id

#2 和 #3 查询都返回相同的行数。我的问题是,#2 和 #3 查询是否始终返回具有不同 session_id 的行,而不遗漏任何行?

最佳答案

在我看来,你可以使用 EXISTS 来实现这一点。

SELECT * 
FROM trades t
WHERE trade_session_status = 'DONE'
AND trade_profit_worker_status = 'UNDONE'
AND EXISTS
(
SELECT 1
FROM trades d
WHERE d.trade_session_status = 'DONE'
AND d.trade_profit_worker_status = 'UNDONE'
AND d.session_id = t.session_id
AND d.id <> t.id
);

请注意,trade_session_status 和 trade_profit_worker_status 的条件也用于 EXISTS 的查询中。我不知道您的目的是否需要这样做,因此如果这不是您所期望的,请将其删除。但你明白了。

另一种方法是使用重复的 session_id 内连接到子查询。

SELECT t.* 
FROM trades t
JOIN
(
SELECT session_id
FROM trades
WHERE trade_session_status = 'DONE'
AND trade_profit_worker_status = 'UNDONE'
GROUP BY session_id
HAVING COUNT(*) > 1
) d ON d.session_id = t.session_id
WHERE t.trade_session_status = 'DONE'
AND t.trade_profit_worker_status = 'UNDONE';

关于mysql - 选择一列中具有相似值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53258247/

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