2

我一直想知道这个,现在一个客户想知道它是否可行:

我有一份运动清单,细分如下:

  • 男孩冰球
  • 男子网球
  • 女孩冰球
  • 女子网球

...ETC

他们希望它排序为:

  • 男孩冰球
  • 女孩冰球
  • 男子网球
  • 女子网球

...ETC

我只是想知道这是否可以通过简单地更改查询来实现。不幸的是,我不能将运动设置为不区分性别并将其性别设置为单独的字段。我无法以任何重要的方式编辑数据库。我认为解决该问题的最佳方法是“最常见的单词”查询,但我不知道如何做到这一点。

提前感谢你们可以提供的任何帮助!

更新:客户最终放弃了请求,但是,我很可能将其作为接受的答案。仍然不是一种完全令人满意的做事方式,但我不确定 MySQL 中是否有更“优雅”的解决方案。

4

2 回答 2

3

'Most Words in Common' 如将每行中的常用词与下一行进行比较?这在 SQL 中会非常困难,因为很难通过查询来比较不同的行。

您可以通过规定的 CASE 语句订购,但它不会很漂亮:

...
按 CASE sport_name 排序
    当“男孩冰球”时 1
    WHEN 'Girls Ice Hockey' THEN 2
    当“男孩网球”时 3
    WHEN 'Girls Tennis' THEN 4
    -  ETC
结束案例
于 2009-05-08T14:06:50.307 回答
2

你能做类似的事情吗

ORDER BY SUBSTRING(sport_name, 6), SUBSTRING(sport_name, 1, 5) 

如果所有运动都以男​​孩/女孩开头,在 mysql 中?

Alternatively the below might be better if space is being used as a delimiter:

ORDER BY SUBSTRING(sport_name, LOCATE(sport_name, ' ')), SUBSTRING_INDEX(sport_name, ' ', 1)

Completely untested as I havent tried this before and dont have a mysql instance to test it against

于 2009-05-08T14:12:20.947 回答