有一个选项表,我正在尝试使用英语默认值(languageID 1)创建多语言。
表格:
optionID optionName optionValue languageID
-----------------------------------------------
1 opt1 Language 1-1
2 opt1 Language 2-2
3 opt2 Language 1-1
查询:
SELECT t3.optionName,
t3.optionValue
FROM (SELECT t2.optionName,
t2.optionValue
FROM tbl_options t2
WHERE t2.optionName IN ('opt1', 'opt2')
AND (t2.languageID = 2 OR t2.languageID = 1)
ORDER BY t2.languageID DESC) t3
GROUP BY t3.optionName
如果找不到匹配项,那么上面的查询是否是基于languageID检索行的最佳方法默认为1?
只是想确保我不会太复杂。
最佳答案
这是在假设英语是最低语言ID的情况下工作的:
select t.optionName, t.optionValue
from (
SELECT optionName, max(languageID) as MaxLanguageID
FROM tbl_options
WHERE optionName IN ('opt1', 'opt2')
AND languageID in (1, 2)
group by optionName
) tm
inner join tbl_options t on tm.optionName = t.optionName
and tm.MaxLanguageID = t.LanguageID
order by t.optionName
关于sql - MySQL,如果列等于?,则选择行否则选择使用默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4431330/