gpt4 book ai didi

mysql。使用 IF 选择 field=1 或 field=2

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

我需要一些查询。

CREATE TABLE `location_areas_localized` (
`id` int(11) DEFAULT NULL,
`lang_index` varchar(5) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
KEY `id` (`id`),
KEY `lang_index` (`lang_index`),
KEY `name` (`name`),
FULLTEXT KEY `name_2` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


INSERT INTO `location_areas_localized` (`id`, `lang_index`,`name`)
VALUES
(1,'ru','Нью Йорк'),
(1,'en','New York'),
(2,'en','Boston'),
(2,'ch','波士顿')
;

搜索逻辑。

如果找到包含 lang_index='ru' AND id IN(1,2) 的行。它必须返回所有 lang_index='ru'如果带有 lang_index='ru' 的一行或多行不存在,但存在带有 lang_index='en' 和某个 id 的行。然后,它必须返回所有存在 land_index='ru' AND id IN(1,2) 的内容以及所有未通过 lang_index='ru' 找到但通过 找到的内容>lang_index='en'(在表中 - 所有带有 lang_index='en' 的行始终存在)

参见sqlfiddle

每个 ID 只需要一个结果。我尝试了 GROUP BY id 但它无法正常工作。

输出必须是

  1,'ru','Нью Йорк'

2,'en','Boston' (because lang_index='ru' with id 2 not found)

最佳答案

SELECT 
coalesce(max(CASE WHEN lang_index='ru' THEN name ELSE null END), name) as name
FROM
location_areas_localized
WHERE
id IN (1,2)
AND (lang_index='en' OR lang_index='ru')
group by
id
ORDER BY
FIELD(lang_index,'ru','en');

关于mysql。使用 IF 选择 field=1 或 field=2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14394980/

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