我有这样的数据库结构:
•Insured
表
+-----------+--------------+-----+
| InsuredID | Name | ... |
+-----------+--------------+-----+
| 1 | John Doe | ... |
| 2 | Bill Gates | ... |
| 3 | Steve Jobs | ... |
+-----------+--------------+-----+
•Accompany
表
+-------------+-----------+---------------+-----+
| AccompanyID | InsuredID | Name | ... |
+-------------+-----------+---------------+-----+
| 1 | 1 | Joanna Doe | ... |
| 2 | 1 | Johnny Doe | ... |
| 3 | 3 | Steve Ballmer | ... |
+-------------+-----------+---------------+-----+
我怎样才能得到这个结果:
+----------------+-----+
| Name | ... |
+----------------+-----+
| John Doe | ... |
| Joanna Doe | ... |
| Johnny Doe | ... |
| Bill Gates | ... |
| Steve Jobs | ... |
| Steve Ballmer | ... |
+----------------+-----+
如何将查询的顺序设为 - Insured
然后Accompany
,其中Accompany.InsuredID
等同于Insured.InsuredID
Accompany
之前的InsuredID = 1
}。它应该这样订购:
InsuredID = 1
InsuredID = 1
InsuredID = 2
InsuredID = 3
InsuredID = 3
答案 0 :(得分:3)
这样的事情应该有效:
select name
from (
select insuredid, name, 0 ins
from insured
union all
select insuredid, name, 1 ins
from accompany) isq
order by insuredid, ins
基本上插入一个假列来标识这些行来自哪个表,然后按insuredid
排序,然后按我们的任意表编号排序。
答案 1 :(得分:0)
SELECT
*
FROM (SELECT NAme,.... FROM Insured
UNION ALL
SELECT Name,.... FROM Accompany)
ORDER BY Name
答案 2 :(得分:0)
未经测试,类似这样:
SELECT Name
FROM (
SELECT InsuredID, Name FROM Insured
UNION
SELECT InsuredID, Name FROM Accompany
) AS t
ORDER BY InsuredID