gpt4 book ai didi

MYSQL 使用 WHERE、AND、OR 选择

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

我正在尝试从数据库中获取选定的数据,但遇到了麻烦,我确信它很简单,我没有看到,但我无法弄清楚。

表 jobs 有 5 个字段:job_id、job_status、job_schedulestatus、job_schedulestatus2、job_schedulestatus3。 id 是一个自动递增的数字,状态可以有两个值 Active 或 Invoiced,并且计划状态每个都可以包含从下拉列表中选择的大量值,但在这种情况下,我只想关注称为 FOC 的值,已取消并提供示例。

我想要做的是选择所有设置为事件且在计划状态 1-3 中没有设置 FOC、已取消或示例的值

这是我的选择语句:

SELECT job_id, job_status, job_schedulestatus, job_schedulestatus2, job_schedulestatus3
FROM jobs WHERE job_status='Active'
AND ( job_schedulestatus!='FOC' OR job_schedulestatus!='Cancelled' OR job_schedulestatus!='Sample' )
OR ( job_schedulestatus2!='FOC' OR job_schedulestatus2!='Cancelled' OR job_schedulestatus2!='Sample' )
OR ( job_schedulestatus3!='FOC' OR job_schedulestatus3!='Cancelled' OR job_schedulestatus3!='Sample' )
ORDER BY job_id DESC;

这仍然显示所有具有 FOC、Canceled 或 Sample 的字段。现在,如果我删除 !=并替换为 =它只会显示那些带有 FOC、已取消或示例的内容,这表明使用 != 存在问题。 。我尝试用 <> 替换但还是不行。

如果我只是通过一次检查计划状态来测试它,它的工作原理如下:

SELECT job_id, job_status, job_schedulestatus, job_schedulestatus2, job_schedulestatus3
FROM jobs WHERE job_status='Active' AND job_schedulestatus!='Cancelled
ORDER BY job_id DESC;

有什么想法吗?

提前致谢

最佳答案

这似乎更容易处理:

SELECT job_id
, job_status
, job_schedulestatus
, job_schedulestatus2
, job_schedulestatus3
FROM jobs
WHERE job_status = 'Active'
AND
( job_schedulestatus NOT IN ('FOC','Cancelled','Sample')
OR job_schedulestatus2 NOT IN ('FOC','Cancelled','Sample')
OR job_schedulestatus3 NOT IN ('FOC','Cancelled','Sample')
)
ORDER
BY job_id DESC;

请注意,一般来说,当您发现自己有枚举列(例如上面的 2 列)时,您可以确信您的架构设计不是最佳的。

关于MYSQL 使用 WHERE、AND、OR 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59154162/

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