如何按 mySQL 中新生成的列进行排序?
How do I sort by a new generated column in mySQL?
我必须对按以下形式编码的一些信息进行排序:
GTEX-VJYA-2126-SM-4KL1O
我有一个这个 ID 的列表,我必须使用用“-”分隔的前两个字符串(所以,GTEX-VUSG)并计算我最终得到的每个不同 ID 的数量。
我正在使用以下 MySQL 代码:
mysql> SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*) FROM GTEX_Sample GROUP BYSUBSTRING_INDEX(SAMPID, '-',2);
我得到以下结果:
| GTEX-ZXG5 | 21 |
| GTEX-ZY6K | 19 |
| GTEX-ZYFC | 20 |
| GTEX-ZYFD | 19 |
| GTEX-ZYFG | 25 |
| GTEX-ZYT6 | 26 |
| GTEX-ZYVF | 20 |
| GTEX-ZYW4 | 20 |
| GTEX-ZYWO | 25 |
| GTEX-ZYY3 | 21 |
| GTEX-ZZ64 | 20 |
| GTEX-ZZPT | 12 |
| GTEX-ZZPU | 23 |
| K-562 | 217
现在我需要按新生成的列(第二列)对结果进行排序,但由于是新列,我不知道如何使用 'order by' 命令。有什么办法吗?
只需重复 ORDER BY
子句中的表达式:
SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*)
FROM GTEX_Sample
GROUP BY SUBSTRING_INDEX(SAMPID, '-',2)
ORDER BY COUNT(*) DESC
您还可以为 SELECT
子句中的列添加别名,并使用它来排序:
SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*) AS CNT
FROM GTEX_Sample
GROUP BY SUBSTRING_INDEX(SAMPID, '-',2)
ORDER BY CNT DESC
请注意,MySQL 通过允许在 GROUP BY
子句中使用列别名来扩展 SQL 标准。这使您可以执行以下操作:
SELECT SUBSTRING_INDEX(SAMPID,'-',2) AS SUBSAMPID, COUNT(*) AS CNT
FROM GTEX_Sample
GROUP BY SUBSAMPID
ORDER BY CNT DESC
GMB 有正确答案。
Order by 也采用位置参数,例如
SELECT SUBSTRING_INDEX(SAMPID,'-',2), 计数(*)
来自 GTEX_Sample
GROUP BYSUBSTRING_INDEX(SAMPID, '-',2) ORDER BY 2;
我必须对按以下形式编码的一些信息进行排序: GTEX-VJYA-2126-SM-4KL1O 我有一个这个 ID 的列表,我必须使用用“-”分隔的前两个字符串(所以,GTEX-VUSG)并计算我最终得到的每个不同 ID 的数量。
我正在使用以下 MySQL 代码:
mysql> SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*) FROM GTEX_Sample GROUP BYSUBSTRING_INDEX(SAMPID, '-',2);
我得到以下结果:
| GTEX-ZXG5 | 21 |
| GTEX-ZY6K | 19 |
| GTEX-ZYFC | 20 |
| GTEX-ZYFD | 19 |
| GTEX-ZYFG | 25 |
| GTEX-ZYT6 | 26 |
| GTEX-ZYVF | 20 |
| GTEX-ZYW4 | 20 |
| GTEX-ZYWO | 25 |
| GTEX-ZYY3 | 21 |
| GTEX-ZZ64 | 20 |
| GTEX-ZZPT | 12 |
| GTEX-ZZPU | 23 |
| K-562 | 217
现在我需要按新生成的列(第二列)对结果进行排序,但由于是新列,我不知道如何使用 'order by' 命令。有什么办法吗?
只需重复 ORDER BY
子句中的表达式:
SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*)
FROM GTEX_Sample
GROUP BY SUBSTRING_INDEX(SAMPID, '-',2)
ORDER BY COUNT(*) DESC
您还可以为 SELECT
子句中的列添加别名,并使用它来排序:
SELECT SUBSTRING_INDEX(SAMPID,'-',2), COUNT(*) AS CNT
FROM GTEX_Sample
GROUP BY SUBSTRING_INDEX(SAMPID, '-',2)
ORDER BY CNT DESC
请注意,MySQL 通过允许在 GROUP BY
子句中使用列别名来扩展 SQL 标准。这使您可以执行以下操作:
SELECT SUBSTRING_INDEX(SAMPID,'-',2) AS SUBSAMPID, COUNT(*) AS CNT
FROM GTEX_Sample
GROUP BY SUBSAMPID
ORDER BY CNT DESC
GMB 有正确答案。
Order by 也采用位置参数,例如
SELECT SUBSTRING_INDEX(SAMPID,'-',2), 计数(*) 来自 GTEX_Sample GROUP BYSUBSTRING_INDEX(SAMPID, '-',2) ORDER BY 2;