gpt4 book ai didi

MySQL SELECT + LEFT JOIN + IF 查询

转载 作者:可可西里 更新时间:2023-11-01 08:06:46 26 4
gpt4 key购买 nike

我有一个名为类别的简单数据库表:

category.id category.name category.lang
1 'apple' 'en'
1 'manzana' 'es'
1 '' 'de'
1 '' 'it'

变量:

$default_lang = 'en';
$current_lang = 'it';

我想根据 $current_lang 进行查询,返回 category_name 字段,但是如果 category.name 为空,那么应该像这样使用 $default_lang 中的 category.name:

SELECT * FROM cat_list
LEFT JOIN category ON cal_list.id = category.id
AND IF(category.name = $current_lang = '', $default_lang, 'No Lang')

请让我知道,我该如何修复这个查询才能使其正常工作?

===

好的,现在我有一个好主意:

SELECT * FROM cat_list LEFT JOIN category 
ON cal_list.id = category.id
AND category_lang IN ($curreng_lang, $default_lang)
AND category_name <> ''

它工作正常,但如果两种语言都有名称值,我是否应该担心“IN”顺序?

最佳答案

SELECT catname=
CASE name
WHEN '' THEN (select name from Category where lang=$default_lang limit 1)
ELSE name
END
FROM Category where id=$current_lang

解释:这里查询在 select 语句中使用 case 语句,在哪里外部查询正在使用条件“id=$current_lang”

所以在 select 语句中它将有 name='',所以对于

catname=
CASE name
WHEN '' THEN (select name from Category where lang=$default_lang limit 1)
ELSE name
END

名字是'',所以第一个条件什么时候应该执行在这里它将执行查询

(select name from Category where lang=$default_lang limit 1) name apple is returned (because language is 'en') and that will be sotred to catname variable. which will be returned in result

如果它第一次获得名称的值(id=$current_lang),它将返回。

关于MySQL SELECT + LEFT JOIN + IF 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12382795/

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