gpt4 book ai didi

sql - 组合比较运算符

转载 作者:行者123 更新时间:2023-12-04 16:46:18 24 4
gpt4 key购买 nike

请告知如何更改以下代码以提取具有 [execution_status](如“failure”)且同时具有 [has_messages](如“0”)的记录。我正在尝试不同的方法,结果总是包含 has_messages '0' 和 '1' :(。非常感谢!!

SELECT * 
FROM (SELECT [id]
,[type]
,[created]
,dateadd(s, created/1000, '19700101')as date_created
,[state]
,[execution_status]
,[has_messages]
FROM [databasename].[tablename]
WHERE type like 'AccessRequest'
AND not state like 'Initialize') as jaro
WHERE date_created between '2016-12-01' and '2016-12-31'
ORDER by date_created

最佳答案

这里有一堆建议。首先,我将修改表以包含日期的计算列:

alter table tablename add date_created as (dateadd(second, created/1000, '19700101'));

这将允许您在可以加快查询速度的列上添加索引。然后,您应该修复日期比较(阅读 Aaron Bertrand 的出色解释 What do BETWEEN and the Devil Have In Common? ):

select t.*
from tablename t
where (date_created >= '2016-12-01' and date_created < '2017-01-01') and
((type like 'AccessRequest' AND state not like 'Initialize') or
(execution_status like 'failure' and has_messages like '0')
)

补充说明:

  • 不要对数值使用 like。如果 has_messages 是数字,只需使用 =
  • 虽然您可以使用like 进行字符串比较,但许多人会同意= 的意图更清晰。
  • 此查询仍将获取 has_message 不为 0 的值,因为这些行满足原始条件。

关于sql - 组合比较运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41808581/

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