我目前被一个简单的SQL查询窃听,我真的不是SQL专家,所以这是我的问题。
我有一个相当简单的表,有一些数据:
------------------------
| Id | Related | Value |
------------------------
| A | B | 1 |
| A | E | 2 |
| B | E | 3 |
| C | A | 2 |
------------------------
我想查询第一列的一系列值的表格。例如,在('A','B','E')中检索Id的值。所以我的预期结果是:
------------------------
| Id | Related | Value |
------------------------
| A | B | 1 |
| A | E | 2 |
| B | E | 3 |
| E | null | null |
------------------------
我知道这必须是一个简单的查询,但它让我望而却步。
感谢。
答案 0 :(得分:0)
您可以在CTE
或任何临时表中添加所有搜索参数,并使用实际表格执行LEFT JOIN
。尝试这样的事情。
DECLARE @t TABLE
(
id CHAR(1),
Related CHAR(1),
Value int
)
INSERT INTO @t VALUES('A','B',1),
('A','E',2),
('B','E',3),
('C','A',2)
;WITH CTE as
(
SELECT 'A' ID UNION ALL SELECT 'B' UNION ALL SELECT 'E'
)
SELECT CTE.id,t.Related,t.Value
FROM CTE
LEFT JOIN @t t ON CTE.id = t.id
答案 1 :(得分:0)
试试这个:
SELECT l.id,d.Related,d.Value
FROM (values ('A'),('B'),('C')) l(id)
LEFT JOIN fairly_simple_table d ON l.id = d.id