两个表:
a
id
b
id
a_id
url
表 b 中的 url 具有如下模式:
.../en-us/...
.../en-gb/...
.../de-at/...
.../de-de/...
.../ja-jp/...
查询:
SELECT b.url
FROM a
JOIN b ON b.a_id = a.id
我怎样才能进一步缩小这些结果以首先选择像 %/en-us/%
这样的 url,然后像 %/en-%/%
如果 en-我们不存在?换句话说,如果我有两个网址,一个用于 en-us 和 en-gb,我如何“优先”en-us 而不是 en-gb 并且只显示一个或另一个?
最佳答案
您可以使用 case
表达式和一系列条件创建自定义排序顺序:
SELECT b.url
FROM a
JOIN b ON b.a_id = a.id
ORDER BY CASE WHEN b.url LIKE '%/en-us/%' THEN 0
WHEN b.url LIKE '%/en-gb/%' THEN 1
WHEN b.url LIKE '%/en-%/%' THEN 2
ELSE 3
END
关于mysql - 按区域设置然后选择语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51617929/