mysql - 按区域设置然后选择语言?

标签 mysql sql select

两个表:

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/

相关文章:

javascript - 单击编辑按钮时 Bootstrap Jquery/Ajax 内联编辑

mysql - 同一张表上的两列合二为一

sql - 如何在不止一列上计算 DISTINCT

mysql - 使用三个带有 1000 多个条目的表进行 SELECT

php - PHP MySQL SELECT 中的嵌套 if 语句

php - MySQL:如何查询获取特定位置的记录?

php - 我如何按日期对查询进行排序和分组,并将它们分组到 Laravel 中的数组中

mysql - 通过 MySQL 选择日期之前的行

mysql - 我如何在 mysql docker 服务上创建数据库

sql - 使用 SSMS 在 SQL Server 2008 中创建 View