首页 > 解决方案 > 编写mysql查询时无法定义自定义列和行

问题描述

我有以下mysql查询:

SELECT SUM(device='Android' OR device='iPhone') AS `Mobile`,
SUM(device='Windows') AS `Desktop`
FROM `table

我从中得到了正确的结果,也就是说,

Mobile      Desktop
123           250

但我想要一个不同的结果,我找不到任何这样的功能。我需要输出看起来像:

    Platforms   Number
      Mobile     123
      Desktop    250

我试过: SELECT 'Mobile' AS Platforms (它实现了第一部分,虽然我无法将桌面添加到它,不知道如何实现它)

标签: mysql

解决方案


DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,device VARCHAR(12)
);

INSERT INTO my_table (device) VALUES
('Android'),
('Windows'),
('iPhone'),
('Bada'),
('Windows'),
('iPhone');

SELECT type
     , COUNT(*) total 
  FROM 
     ( SELECT CASE WHEN device IN('Android','iPhone') THEN 'Mobile'  
                   WHEN device = 'Windows' THEN 'Desktop' 
                   ELSE device END type 
         FROM my_table
     ) x 
 GROUP 
    BY type;
+---------+-------+
| type    | total |
+---------+-------+
| Bada    |     1 |
| Desktop |     2 |
| Mobile  |     3 |
+---------+-------+

推荐阅读