gpt4 book ai didi

mysql - 从 MySQL 中的每个分组数据集中获取单个记录

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

我有一个存储语言信息的表,我想从中提取最相关的数据。如果您请求的语言可用,它应该获得该语言。如果不是,那么它应该返回一个默认值。

数据如下所示:

ID  PARENT_ID   NAME    LANG
1 1 test default
2 1 test en-GB
3 1 test fr
4 4 Hello default
5 4 Hello en-GB
6 4 Hola es

如果我想获得西类牙语的所有结果,那么我应该能够获得记录 6 和记录 1,因为第一组不包含西类牙语版本。我该怎么做?

这是我可以通过查询得到的最接近的结果,但我总是得到默认结果,而不是西类牙语结果:

SELECT h_id,
h_faq_id,
h_question,
h_language
FROM
h_itsm_faqs
WHERE
h_language = 'default'
OR
h_language LIKE 'es'
GROUP BY
h_faq_id
ORDER BY
(CASE WHEN h_language LIKE 'es' THEN 1 ELSE 2 END) ASC

我看到的选项如下:

  1. 一次查询即可获得两者(不知道该怎么做)
  2. 两次查询以获取语言和默认值,然后找出我需要的
  3. 获取所有结果并对它们进行排序

选项 1 会很棒,但值得注意的是选项 3 在分页方面可能会有问题。

最佳答案

一种可能的方法是使用左连接将表与其自身连接起来。然后您可以使用默认语言和特定语言(如果可用)。

SELECT 
f1.id,
f1.parent_id,
f1.name AS 'default_name',
f2.name AS 'translated_name'
FROM
h_itsm_faqs f1 LEFT JOIN h_itsm_faqs f2 ON (f1.parent_id = f2.parent_id AND f2.language LIKE 'es')
WHERE
f1.language = 'default'

关于mysql - 从 MySQL 中的每个分组数据集中获取单个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34045968/

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