Php 如何使用子字符串按两个值排序
我使用PHP和MySQL在屏幕上显示一些数据,但我需要使用两列对表中的行进行排序 在一列上Php 如何使用子字符串按两个值排序,php,mysql,Php,Mysql,我使用PHP和MySQL在屏幕上显示一些数据,但我需要使用两列对表中的行进行排序 在一列上Restricted 我有以下json([“PT”,“GB”]) 在另一列rate中,我有从0到10 我正在寻找的是一种先订购restrictedcontainsGB然后再订购rateDESC的方法(如果我只能使用mysql就最好了) 目前的SQL是 SELECT * FROM Partner ORDER BY FIELD (restricted, '%GB%'), FIELD rate DESC 我已经
Restricted
我有以下json([“PT”,“GB”]
)
在另一列rate
中,我有从0
到10
我正在寻找的是一种先订购restricted
containsGB
然后再订购rate
DESC的方法(如果我只能使用mysql就最好了)
目前的SQL是
SELECT * FROM Partner ORDER BY FIELD (restricted, '%GB%'), FIELD rate DESC
我已经在网上搜索了一个解决方案,我已经做了将近一个月了,没有找到解决方案
**编辑**
应该是什么样子
Partner Name | Countries | rate |
AAAAA | ["GB","FR","PT"] | 9.0 |
BBBBB | ["GB","FR","PT"] | 8.8 |
CCCCC | ["GB","FR","PT"] | 7.2 |
DDDDD | ["US","FR","PT"] | 9.0 |
EEEEE | ["US","FR","PT"] | 8.8 |
FFFFF | ["US","FR","PT"] | 7.2 |
您需要使用以下提到的步骤:
(SELECT * FROM partner where restricted like '%GB%' ORDER BY restricted,
rate DESC)
union all
(SELECT * FROM partner where restricted not like '%GB%' ORDER BY restricted,
rate DESC)
从受限制的合作伙伴(如“%GB%”)中选择*ORDER BY Restricted,rate DESC?不起作用,因为我必须显示所有行,即使它不包含GB。无论如何,感谢您的快速回复,使用LIKE它将只锁定显示有GB的行的数据“我必须显示所有行,即使它不包含GB”->跳过WHERE/LIKE部分然后?:-)我不明白。请举例说明您的数据,以及您希望如何查看订单。我已在其中添加了一个演示表,因此可以查看我正在寻找的订单。我认为这是一个可能的解决方案!谢谢DSomehow Mysql没有正确地按速率排序,目前我所做的是创建两个单独的查询,然后将它们与PHP结合起来。不是最好的解决方案,因为它会减慢网站加载时间。