gpt4 book ai didi

mysql - 比较 SQL 中的值时没有结果

转载 作者:行者123 更新时间:2023-11-30 23:53:03 25 4
gpt4 key购买 nike

我刚刚编写了以下 SQL 查询:

SELECT * from (SELECT voornaam, achternaam, TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE())
AS Leeftijd FROM leiding)
AS kolommen
HAVING Leeftijd < AVG(Leeftijd)
ORDER BY Leeftijd;

它不返回任何结果,但是当我分别执行这些查询时,它们确实给出了结果:

SELECT AVG(Leeftijd) from (SELECT voornaam, achternaam, TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE()) AS Leeftijd FROM leiding) AS kolommen;  

返回 '19.3571',并且

SELECT Leeftijd from (SELECT voornaam, achternaam, TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE()) AS Leeftijd FROM leiding) AS kolommen;  

返回年龄列表,范围从 25 到 18。
有谁知道出了什么问题?提前致谢!

最佳答案

前面答案的组合应该有效:

SELECT 
voornaam,
achternaam,
TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE()) AS Leeftijd
from
leiding
WHERE
TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE()) < (select AVG(TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE())) from leiding)
ORDER BY
Leeftijd
;

第一个是在 WHERE 子句中使用聚合函数,这在 SQL 中是被禁止的,第二个是使用 HAVING 作为 WHERE,这是很糟糕的。哦,您将 TIMESTAMPDIFF(YEAR, geboortedatum, CURDATE()) 提取为 Leeftijd,并且您的表中可能有具有该名称的列...

因此,这种组合应该适合您。

关于mysql - 比较 SQL 中的值时没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34576063/

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