在我的数据库中,我必须具有一对多(可选)关系的表1....0,*
Table1:
+--+---------+
|id| name |
+--+---------+
| 1| user1 |
| 2| user2 |
| 3| user3 |
+--+---------+
Table2
+--+------+-------+
|id|tb1_ID|city |
+--+------+-------+
| 1| 1 | a |
| 2| 1 | b |
| 3| 2 | c |
+--+------+-------+
现在我想要表 1 中的所有现有记录和表 2 的前 1 个元素(对于每个表 1 行)
喜欢
+----+------+----+--------+---------+
|p.id|p.name|c.id|c.tb1_ID|c.city |
+----+------+----+--------+---------+
| 1 | user1| 1 | 1 | a |
| 2 | user2| 3 | 2 | c |
| 3 | user3|null| null | null |
+----+------+----+--------+---------+
怎么办???
最佳答案
例如这个WITH common_table_expression
和 ROW_NUMBER
功能:
WITH cte AS(
SELECT t1.id AS t1ID
, t1.name
, t2.id AS t2ID
, t2.tb1_ID
, t2.city
, ROW_NUMBER()OVER(Partition By t1.id Order By t2.id)AS t1RowNum
FROM Table1 t1 LEFT OUTER JOIN Table2 t2 ON t1.id=t2.tb1_ID
)
SELECT cte.*
FROM cte
WHERE t1RowNum = 1
关于sql - 左连接选择表 1 中的所有记录和表 2 的单个(可选)记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10582410/