gpt4 book ai didi

mysql - 为什么这个 mysql 查询无法根据它们的值返回某些行

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

我在 sqlfiddle 中测试查询并注意到一些奇怪的事情:

如果你看一下这个fiddle它工作正常,或者我猜它的行为符合预期。

但是this one正在做完全不同的事情。

我注意到,根据时间戳的值,查询是否有效,这是 sqlfiddle 独有的东西还是 sqllite 的东西?这是怎么回事?

* 编辑 *

查询:

SELECT * FROM a
join b
on a.id = b.id
group by a.id
having b.tstamp = max(b.tstamp)

最佳答案

您的 HAVING 子句来晚了,它在分组后 运行,每行不再有多个 b 记录,b 包含一个任意 表中的记录(通常是行顺序中的第一个匹配项,但应该依赖这一点),HAVING b.something = MAX(b.something) 是与说 HAVING 1 = MAX(1);1=1 相同,或者换句话说:对于组的随机记录始终为真。

你想要的结果可以通过自连接或子查询来完成,我喜欢自连接,因为 MySQL 在它上面表现得很好:

SELECT * 
FROM a
JOIN b b1
ON b1.id = a.id
LEFT JOIN b b2
ON b2.id = a.id
AND b2.tstamp > b1.tstamp
WHERE b2.id IS NULL;

关于mysql - 为什么这个 mysql 查询无法根据它们的值返回某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16573824/

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