gpt4 book ai didi

MySQL:首先查找特定值,然后获取第二个值

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

到目前为止我的代码

SELECT * FROM gp 
WHERE status IN ('priority', NULL)
AND (status='priority' OR EXISTS(SELECT * FROM gp WHERE status IS NULL))
LIMIT 1

我正在尝试获取带有 status = 'priority' 的第一行(如果存在),否则获取带有 status = NULL 的第一行。状态可能还有其他值,但我只想首先获取 priority(如果可用),然后获取 NULL

到目前为止,我的代码所做的是,当存在 status = 'priority' 的行时,它会返回它们,但当仅存在 NULL 时,不会返回任何内容。

最佳答案

您不能在 IN 表达式中使用 NULL,因此您需要将 WHERE 子句的第一部分更改为

WHERE status = 'priority' OR status IS NULL

您可以删除 WHERE 子句的第二部分,然后简单地

ORDER BY status = 'priority` DESC

这会将 status = 'priority' 的行置于 statusNULL 的行之前

因此您的查询作为一个整体变为:

SELECT * FROM gp 
WHERE status = 'priority' OR status IS NULL
ORDER BY status = 'priority` DESC
LIMIT 1

请注意,要获取 status = 'priority' 的“第一”行,您需要一个排序列(SQL 表是无序的,因此没有排序列“first”没有任何意义),并且您可以将其添加到 ORDER BY 子句中:

SELECT * FROM gp 
WHERE status = 'priority' OR status IS NULL
ORDER BY status = 'priority` DESC, id ASC
LIMIT 1

关于MySQL:首先查找特定值,然后获取第二个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59805353/

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