我有两张这样的表:
// colors // numbers
+----+-------+ +----+--------+
| id | color | | id | number |
+----+-------+ +----+--------+
| 1 | red | | 1 | zero |
| 2 | blue | | 2 | one |
| 3 | green | | 3 | two |
+----+-------+ | 4 | four |
| 5 | eight |
+----+--------+
这也是我的疑问:
select * from colors
union all
select * from numbers
现在,上面查询的结果是这样的:首先来自colors
表的所有行,然后来自numbers
表的所有行。但我不想要那种排序。我想要这个结果:
+----+-------+
| id | color |
+----+-------+
| 1 | red |
| 1 | zero |
| 2 | blue |
| 2 | one |
| 3 | green |
| 3 | two |
| 4 | four |
| 5 | eight |
+----+-------+
如何使用order by
进行排序?
答案 0 :(得分:2)
对我来说效果很好......
DROP TABLE IF EXISTS colors;
CREATE TABLE colors
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,color VARCHAR(12) NOT NULL
);
INSERT INTO colors VALUES
(1 ,'red'),
(2 ,'blue'),
(3 ,'green');
DROP TABLE IF EXISTS numbers;
CREATE TABLE numbers
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,number VARCHAR(12) NOT NULL
);
INSERT INTO numbers VALUES
(1 ,'zero'),
(2 ,'one'),
(3 ,'two'),
(4 ,'four'),
(5 ,'eight');
SELECT * FROM colors UNION ALL SELECT * FROM numbers ORDER BY id;
+----+-------+
| id | color |
+----+-------+
| 1 | red |
| 1 | zero |
| 2 | blue |
| 2 | one |
| 3 | green |
| 3 | two |
| 4 | four |
| 5 | eight |
+----+-------+
答案 1 :(得分:1)
试试这个:
... Order By 1,2
按column #1
排序,然后column #2
。