有什么办法可以进行分组,但是要赋予在字段中具有一定价值的记录更大的重要性?
例子:
value - language - externID 1 default 10 1 english 10 2 english 10 3 default 10
SELECT的结果:
1 - english - 10 2 - english - 10 3 - default - 10
IE:当记录具有相同的“值”时,更喜欢具有“英语”的记录
示例:SELECT * FROM tbl WHERE externID = 10 AND语言IN(’default’,’english’)GROUP BY值“ PREFER lang = english”
ps。“英语”是一个例子,我需要我可以选择不同的特定语言
在另一个问题上,Yes123增加了一些额外的…
如果首选语言是中文,并且将值与默认值和英语关联,则该值应不返回任何结果…
我明白这意味着…
如果该组不包含该语言,但包含非默认语言,则不返回任何内容
DECLARE @preferred VARCHAR(64) SET @preferred = ‘English’
SELECT value, ( SELECT language FROM tbl [search] WHERE externID = 10 AND value = tbl.value AND language IN (‘default’, @preferred) ORDER BY NULLIF(language, ‘default’) DESC LIMIT 1 ) FROM tbl WHERE externID = 10 GROUP BY value HAVING COUNT(*) = SUM(CASE WHEN language IN (‘default’, @preferred) THEN 1 ELSE 0 END)
HAVING子句只是指出该值的每个记录都必须是“默认”或您要搜索的语言。
子查询中的ORDER BY和LIMIT 1始终强制最后选择“默认”。意思是,如果找到了首选语言,则会优先显示该语言。