import polars as pl
import duckdb
# 创建示例 DataFrame
df1 = pl.DataFrame({
"id": [1, 2, 4, 5],
"left_id": [101, 102, 103, 104],
"right_id": [201, 202, 203, 105]
})
df2 = pl.DataFrame({
"id": [101, 102, 103, 104,201, 202, 203, 204],
"idid": [101, 102, 103, 104,201, 202, 203, 204]
})
conn = duckdb.connect(database=':memory:')
# conn.sql("""
# select a.id,a.left_id,b.idid as lidid, a.right_id,c.idid as ridid
# from df1 a,df2 b,df2 c
# where a.left_id=b.id or a.right_id=c.id
# """).show()
t1 = conn.sql("""
select a.id,a.left_id,b.idid as lidid
from df1 a join df2 b on a.left_id=b.id
""")
# conn.sql("""
# select * from t1
# """).show()
t2 = conn.sql("""
select a.id,a.right_id,b.idid as ridid
from df1 a join df2 b on a.right_id=b.id
""")
# conn.sql("""
# select * from t2
# """).show()
conn.sql("""
select a.id,a.left_id,a.lidid,b.right_id,b.ridid
from t1 a join t2 b on a.id=b.id
""").show()
┌───────┬─────────┬───────┬──────────┬───────┐
│ id │ left_id │ lidid │ right_id │ ridid │
│ int64 │ int64 │ int64 │ int64 │ int64 │
├───────┼─────────┼───────┼──────────┼───────┤
│ 1 │ 101 │ 101 │ 201 │ 201 │
│ 2 │ 102 │ 102 │ 202 │ 202 │
│ 4 │ 103 │ 103 │ 203 │ 203 │
└───────┴─────────┴───────┴──────────┴───────┘
conn.sql("""
select a.id,a.left_id,a.lidid,b.right_id,b.ridid
from t1 a full join t2 b on a.id=b.id
""").show()
┌───────┬─────────┬───────┬──────────┬───────┐
│ id │ left_id │ lidid │ right_id │ ridid │
│ int64 │ int64 │ int64 │ int64 │ int64 │
├───────┼─────────┼───────┼──────────┼───────┤
│ 1 │ 101 │ 101 │ 201 │ 201 │
│ 2 │ 102 │ 102 │ 202 │ 202 │
│ 4 │ 103 │ 103 │ 203 │ 203 │
│ 5 │ 104 │ 104 │ NULL │ NULL │
└───────┴─────────┴───────┴──────────┴───────┘
conn.sql("""
select a.id,a.left_id,b.idid as lidid, a.right_id,c.idid as ridid
from df1 a,df2 b,df2 c
where a.left_id=b.id and a.right_id=c.id
""").show()
┌───────┬─────────┬───────┬──────────┬───────┐
│ id │ left_id │ lidid │ right_id │ ridid │
│ int64 │ int64 │ int64 │ int64 │ int64 │
├───────┼─────────┼───────┼──────────┼───────┤
│ 1 │ 101 │ 101 │ 201 │ 201 │
│ 2 │ 102 │ 102 │ 202 │ 202 │
│ 4 │ 103 │ 103 │ 203 │ 203 │
└───────┴─────────┴───────┴──────────┴───────┘
conn.sql("""
select a.id,a.left_id,b.idid as lidid, a.right_id,c.idid as ridid
from df1 a
join df2 b on a.left_id=b.id
join df2 c on a.right_id=c.id
""").show()
┌───────┬─────────┬───────┬──────────┬───────┐
│ id │ left_id │ lidid │ right_id │ ridid │
│ int64 │ int64 │ int64 │ int64 │ int64 │
├───────┼─────────┼───────┼──────────┼───────┤
│ 1 │ 101 │ 101 │ 201 │ 201 │
│ 2 │ 102 │ 102 │ 202 │ 202 │
│ 4 │ 103 │ 103 │ 203 │ 203 │
└───────┴─────────┴───────┴──────────┴───────┘
conn.sql("""
select a.id,a.left_id,b.idid as lidid, a.right_id,c.idid as ridid
from df1 a
inner join df2 b on a.left_id=b.id
inner join df2 c on a.right_id=c.id
""").show()
┌───────┬─────────┬───────┬──────────┬───────┐
│ id │ left_id │ lidid │ right_id │ ridid │
│ int64 │ int64 │ int64 │ int64 │ int64 │
├───────┼─────────┼───────┼──────────┼───────┤
│ 1 │ 101 │ 101 │ 201 │ 201 │
│ 2 │ 102 │ 102 │ 202 │ 202 │
│ 4 │ 103 │ 103 │ 203 │ 203 │
└───────┴─────────┴───────┴──────────┴───────┘
3表join
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- SQL表连接(INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN...
- SQL表连接查询(inner join、full join、left join、right join) [图片上传...