gpt4 book ai didi

mysql - sql where 子句 - 最佳实践 : matching fields are entitled to be selected only if the other fields match, 或设置为 null

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

很难更明确地表达主题,需要解释问题。

在此选择:

SELECT `id`, `creation_time`, `roster_date`, `roster_type`,`roster_report_time`, `flight_hrs`, `rank`, `email` 
FROM `alert_subscriptions`
WHERE 1

我在 where 子句中使用了值“rank”、“roster_date”和“roster_type”的固定组合。问题是我需要找到谁在“rank”中仅插入了一个值并将其他字段设置为 null),或者谁在“roster_type”设置为 null 时设置了“rank”和“roster_date”,等等。

只有当其他字段匹配或设置为空时,拥有匹配字段的人才有资格被选中。

当然,一个解决方案是在where子句中放入所有可能的组合(在本例中为7,例如ranknullnullORnulldatenullORnullnulltypeORrankdatenullORranknulltype..等等..),但我想找到一个优雅的解决方案,也可以轻松更新更多字段(这个解决方案会让我发疯,在 where 子句中添加更多字段,组合的数量会大大增加!)

我确信有一个带有某些选择、联合或 View 的解决方案,但是当我接近解决方案时,我迷失了方向,无法下定决心。

我陷入困境,我需要一些外部观点。

谢谢大家

最佳答案

只需检查每个条件是否为NULL,并将其视为匹配的成功部分。然后,您可以使用 OR 组合每个条件测试。

WHERE (year IS NULL OR year = 2010)
AND (type IS NULL OR type = 'wagon')
AND (size IS NULL OR size = '2L')

关于mysql - sql where 子句 - 最佳实践 : matching fields are entitled to be selected only if the other fields match, 或设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41992528/

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