gpt4 book ai didi

Mysql - 在不同日期比较同一个表中的两个字符串

转载 作者:行者123 更新时间:2023-11-30 22:34:04 25 4
gpt4 key购买 nike

相关表结构为:

id(INT), reference_id(INT), status(VARCHAR(20)), date(TIMESTAMP)

此记录每天更新一次。

问题:我想显示状态字段(大多数时候是静态的)与前一天的不同的每条记录,从而能够显示状态更改的日期并显示历史记录。

如何?

伪:

Show * where status for today != status for yesterday

早期的逻辑,但我对 mysql 的了解有限,这让我碰壁了。

SELECT * from table_name WHERE DATE(date) = CURDATE()
UNION
SELECT table_name.status AS yesterday_status WHERE DATE(date) = CURDATE() - 1

然后我打算在 perl 中比较它们,这不是那么有效,所以我希望有人可以分享一些启示......

最佳答案

这是我的方法。这并不完全符合您的要求,但也许您会喜欢我的解决方案。

http://sqlfiddle.com/#!9/896b4/7

SELECT 
today.*,
yesterday.*
FROM t_status today
LEFT JOIN t_status yesterday
ON DATE(yesterday.date)<DATE(today.date)
AND yesterday.reference_id = today.reference_id
AND yesterday.status != today.status
WHERE DATE(today.date) = CURDATE()
ORDER BY yesterday.date DESC
LIMIT 1
;

更新 或者我可能误解了你的目标,你只需要比较昨天状态,而不是所有过去的状态。如果是这样,您可以试试这个 INNER JOIN:

http://sqlfiddle.com/#!9/dd61f1/4

SELECT 
today.*,
yesterday.*
FROM t_status today
INNER JOIN t_status yesterday
ON DATE_ADD(CURDATE(),INTERVAL -1 DAY) = DATE(yesterday.date)
AND yesterday.reference_id = today.reference_id
AND yesterday.status != today.status
WHERE DATE(today.date) = CURDATE();

如有任何问题,欢迎您提出。

关于Mysql - 在不同日期比较同一个表中的两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039261/

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