gpt4 book ai didi

MySQL 查询 IF EXISTS ELSE IF ELSE

转载 作者:行者123 更新时间:2023-11-29 11:03:23 26 4
gpt4 key购买 nike

我正在尝试执行一个简单的 IF、ELSE IF、ELSE 语句,这在 SQL 中相当容易。由于某种原因它不会在 MySQL 中听我的。它一直告诉我“阅读该死的手册”,尽管手册是:https://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html

没有说明如何在 SELECT 部分中执行此操作,仅在 where 之后说明,我认为这意味着我无法按照习惯的方式执行此操作。剩下的问题是,我该怎么做?

    SELECT EXISTS(SELECT 1 FROM `content` WHERE `ResourceKey`='Test' AND `Language`='en-GB') 
THEN
SELECT `Text` FROM `content` WHERE `ResourceKey`='Test' AND `Language`='en-GB';
ELSE
SELECT `Text` FROM `content` WHERE `ResourceKey`='Test' AND `Language`='nl-NL';
END IF;

还有一些信息:

Innodb 版本:1.1.8协议(protocol)版本:10

最佳答案

如果您期望查询中包含一条记录,则无需为此使用 IF ELSE 语句。试试这个:

SELECT `Text` 
FROM `content`
WHERE `ResourceKey`='Test' AND `Language` ΙΝ ('en-GB', 'nl-NL');
ORDER BY CASE
WHEN `Language` = 'en-GB' THEN 1
ELSE 2
END
LIMIT 1

如果您想要始终返回一些文本,即使没有返回记录,也可以使用:

SELECT COALESCE(t2.Text, 'No record found') AS Text
FROM (
SELECT 'en-GB' AS lang UNION ALL 'nl-NL' UNION ALL 'no-lang') AS t1
LEFT JOIN content AS t2
ON t1.lang = t2.Language AND t2.ResourceKey = 'Test'
ORDER BY CASE
WHEN t1.lang = 'en-GB' THEN 1
WHEN t1.lang = 'nl-NL' THEN 2
ELSE 3 -- This is the case where t1.lang = 'no-lang'
END
LIMIT 1

我假设您的数据库中没有包含 Language = 'no-lang' 的记录。

关于MySQL 查询 IF EXISTS ELSE IF ELSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832095/

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