我想按照where子句的顺序对查询结果进行排序。
例如,我有这样的查询:
SELECT *
FROM config_ban_num
WHERE
( adresse_seo LIKE '12-rue-de-rivoli%'
OR adresse_seo LIKE '13-rue-de-rivoli%'
OR adresse_seo LIKE '11-rue-de-rivoli%' )
AND (postcode='75004')当我打印结果时,我得到了这样的结果:
11-rue-de-rivoli
12-rue-de-rivoli
13-rue-de-rivoli我想要关于where子句中的顺序的顺序:
12-rue-de-rivoli
13-rue-de-rivoli
11-rue de rivoli发布于 2017-03-10 22:26:53
一种选择是使用子查询:
SELECT * FROM (
SELECT *,
CASE WHEN adresse_seo LIKE '12-rue-de-rivoli%' THEN 1
WHEN adresse_seo LIKE '13-rue-de-rivoli%' THEN 2
WHEN adresse_seo LIKE '11-rue-de-rivoli%' THEN 3
ELSE 4 END as Position
FROM config_ban_num
WHERE
( adresse_seo LIKE '12-rue-de-rivoli%'
OR adresse_seo LIKE '13-rue-de-rivoli%'
OR adresse_seo LIKE '11-rue-de-rivoli%' )
AND (postcode='75004')
) SubQuery
ORDER BY Position发布于 2017-03-10 22:36:33
SELECT *
FROM config_ban_num
WHERE adresse_seo in ('12-rue-de-rivoli%', '13-rue-de-rivoli%', '11-rue-de-rivoli%')
AND (postcode='75004')
ORDER BY FIELD(adresse_seo, '12-rue-de-rivoli%', '13-rue-de-rivoli%', '11-rue-de-rivoli%')https://stackoverflow.com/questions/42720628
复制相似问题