【问题标题】:Search order by query string按查询字符串搜索顺序
【发布时间】:2015-04-01 12:37:39
【问题描述】:

我使用以下工作 mysql 查询:

SELECT Nom_Appellations
FROM appellations
WHERE Nom_Appellations LIKE '%saint%'
LIMIT 8

我有这个结果:

Lussac-Saint-Emilion
Montagne-Saint-Emilion
Puisseguin-Saint-Emilion
Saint-Emilion
Saint-Emilion grand cru
Saint-Emilion grand cru classé

但我想通过这样的字符串“圣”相关性来排序:

Saint-Emilion
Saint-Emilion grand cru
Saint-Emilion grand cru classé
Lussac-Saint-Emilion
Montagne-Saint-Emilion
Puisseguin-Saint-Emilion

如何通过特色字符串获取数据顺序?

【问题讨论】:

  • 只需将此添加到您的查询ORDER BY 'Nom_Appellations' ASC
  • 是不是你只想要那些开始圣人然后正常订购?

标签: mysql sql select sql-order-by


【解决方案1】:

您可以在Nom_Appellations中寻找saint的首次出现:

SELECT Nom_Appellations
FROM appellations
WHERE Nom_Appellations LIKE '%saint%'
ORDER BY LOCATE('saint', lower(Nom_Appellations))
LIMIT 8;

【讨论】:

  • 你不需要第二个参数来保持按字母顺序排列的关系吗?
  • @xQbert 。 . .原始查询没有ORDER BY,因此对 OP 来说似乎并不重要。当然,将, Nom_Appellations 添加到ORDER BY 可能是可取的。
【解决方案2】:
SELECT Nom_Appellations
FROM appellations
WHERE Nom_Appellations LIKE '%saint%'
ORDER BY case when left(nom_Appellations,5)= 'Saint' then 0 else 1 end, nom_appellations
LIMIT 8;

假设您只想要那些先从 Saint 开始,其余按字母顺序排列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多