我找到了很多方法来只显示不同的结果,但是我如何同时选择不同的和非不同的结果呢?考虑这些表:
A
---------------------------------
| id | col1 | col2 |
---------------------------------
| 1 | aa | dd |
---------------------------------
| 1 | bb | ee |
---------------------------------
| 2 | cc | ff |
---------------------------------
B
---------------------------------
| id | col1 | col2 |
---------------------------------
| 1 | a | d |
---------------------------------
| 2 | b | e |
---------------------------------
| 3 | c | f |
---------------------------------
C
---------------------------------
| id | col1 | col2 |
---------------------------------
| 1 | x | 1a |
---------------------------------
| 2 | y | 2b |
---------------------------------
| 3 | x | 3c |
---------------------------------
一个用户向我提供了一个 id 和一个列列表,比如 id = 1 和 columns = (a.col1、b.col1 和 c.col2)。无论 id 出现多少次,我将如何构造一个查询来为我提供 id 匹配的所有列信息?
我目前的查询是:
SELECT a.col1, b.col1, c.col2
FROM a
LEFT JOIN b
ON b.id = a.id
LEFT JOIN c
ON c.id = b.id
WHERE a.id = 1
问题是,当我想获得两个结果(或来自恰好具有匹配的重复 id 的任何表的所有结果)时,这只给了我来自表 A 的一个结果。注意:在表 A 中,列 id 和 col1 一起构成了主键,这就是我重复 id 的原因。
建议?
谢谢!