我一直想知道这一点,现在客户想知道它是否可行:
我有一份体育名单,如下所示:
...等
他们希望它像:
...等
我只是想知道通过简单地改变查询是否可行。不幸的是,我不能将这些运动设定为性别非特异性,并将其性别设定为一个单独的领域。我无法以任何重要方式编辑数据库。我认为解决问题的最佳方法是“大多数常用词汇”查询,但我不知道如何做到这一点。
提前感谢您提供的任何帮助!
更新:客户端最终放弃了请求,但是,我很可能接受它作为接受的答案。仍然不是一种完全令人满意的做事方式,但我不确定MySQL中是否有更“优雅”的解决方案。
答案 0 :(得分:3)
'大多数共同词'比较每行中的常用词与下一行?这在SQL中会相当困难,因为很难获得查询来比较不同的行。
您可以通过规定性的CASE声明进行排序,但它不会很漂亮:
... order by CASE sport_name WHEN 'Boys Ice Hockey' THEN 1 WHEN 'Girls Ice Hockey' THEN 2 WHEN 'Boys Tennis' THEN 3 WHEN 'Girls Tennis' THEN 4 -- etc END CASE
答案 1 :(得分:2)
你能做点什么吗
ORDER BY SUBSTRING(sport_name, 6), SUBSTRING(sport_name, 1, 5)
如果所有的运动都以Boys / Girls开始,那么在mysql中?
如果空间被用作分隔符,则可能更好:
ORDER BY SUBSTRING(sport_name, LOCATE(sport_name, ' ')), SUBSTRING_INDEX(sport_name, ' ', 1)
完全没有经过测试,因为我之前没有尝试过,也没有一个mysql实例来测试它