首页 > 解决方案 > 如何使用子字符串按两个值排序

问题描述

我正在使用 PHP 和 MySQL 在屏幕上显示一些数据,但我需要使用 2 列对表的行进行排序。

在一列上Restricted ,我有以下 json ( ["PT","GB"])

在另一列rate我有十进制值从010

我正在寻找一种首先订购的方法Restriced包含GB然后rateDESC(如果我只能使用 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    |

标签: phpmysql

解决方案


您需要使用以下提到的步骤:

  1. 打破你的记录分为 2 个部分(有“GB”和没有“GB”)。
  2. 根据您的逻辑分别对两个记录集进行排序
  3. 使用 UNION ALL 连接两个记录

所以你的查询应该如下:

(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)

推荐阅读