gpt4 book ai didi

MySQL查询按最新日期计算重复次数

转载 作者:行者123 更新时间:2023-11-29 09:50:07 24 4
gpt4 key购买 nike

我有下表:

 client  datescanned  owa
user1 2019-02-27 A1
user1 2019-02-28 A3
user1 2019-02-29 A6
user1 2019-02-29 A2
user1 2019-02-29 A1

这是我的查询

 SELECT COUNT(*) FROM s1 WHERE OWA= "A1" AND CLIENT ='user1' and 'datescanned' = 
( SELECT max('datescanned') FROM s1)

基本上我只想获得最新日期(2019-02-29)的 A1 计数。在本例中,它应该返回 1,现在返回 2(从 2019-02-27 获取 A1。

任何帮助将不胜感激!!

谢谢娜塔莉

** 更新 1 **

现在以下工作正常,除了...

SELECT COUNT(*) 
FROM s1
WHERE trim(OWA)= "A1"
AND trim(CLIENT) ='user1'
AND datescanned = ( SELECT max(datescanned) FROM s1 where trim(OWA)
='A1')

更新表格

 client  datescanned  owa
user1 2019-02-27 A1
user1 2019-02-28 A3
user1 2019-02-29 A1
user1 2019-02-29 A1
user1 2019-02-30 A0
user1 2019-02-30 A3

如果最近日期 2019-02-30 没有 A1,它会给我“2”,因为 2019-02-29 有两个 A1...

我希望该值为零,因为仅最新日期没有 A1。

最佳答案

只需删除列名称周围的单引号

 SELECT COUNT(*) 
FROM s1
WHERE trim(OWA)= "A1"
AND trim(CLIENT) ='user1'
AND datescanned = ( SELECT max(datescanned) FROM s1)

如果使用单引号,则引用字符串文字而不是列名称..
当您需要引用复合列名称或保留字时,您可以使用反引号

您的查询可能基于无效日期(2019 02 29(也尝试选择 A3 (2019-02-28))

 SELECT COUNT(*) 
FROM s1
WHERE trim(OWA)= "A3"
AND trim(CLIENT) ='user1'
AND datescanned = ( SELECT max(datescanned) FROM s1 where trim(OWA) ='A3')

当然只需从 s1 中选择 max(datescanned) 并检查真实结果

并最终尝试使用 like 代替 =

 SELECT COUNT(*) 
FROM s1
WHERE trim(OWA) like "A3"
AND trim(CLIENT) like 'user1'
AND datescanned = ( SELECT max(datescanned) FROM s1 where trim(OWA) ='A3')

关于MySQL查询按最新日期计算重复次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54960817/

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