Left join with other table with where 子句
Left join with other table with where clause
我想加入 MySQL 数据库中的 2 个 table,我想在其中包含来自 table1.
的所有结果
我的 table 看起来像这样:
table1
id
name
1
name1
2
name2
3
name3
4
name4
5
name5
6
name6
7
name7
8
name8
table2
id
table1_id
myfield
1
3
test1
2
2
test2
3
1
test1
4
4
test2
5
5
null
6
2
null
我想要实现的是获得一个 table,其中包含来自 table1
的所有行,并且仅包含来自 table2
.
的数据
这是我的查询:
select * from table1 as t1
left join table2 as t2 on t1.id = t2.table1_id
where myfield="test1"
group by t1.id
但这不是我想要达到的。
我想要实现的是从 table1
获取所有记录,并从 table2
的 table2.myfield="test1"
获取所有相关记录。另一个 table2.mytable
为空(如果它们不满足 table2.myfield="test1"
)。
非常感谢任何帮助!
谢谢!
将 where
子句移至 on
子句:
select * from table1 as t1
left join table2 as t2 on t1.id = t2.table1_id
and myfield="test1"
group by t1.id
顺便说一句:一些 DBMS 不允许 select *
和 group by
。所以 select id
和一些聚合值或删除 group by id
我想加入 MySQL 数据库中的 2 个 table,我想在其中包含来自 table1.
的所有结果我的 table 看起来像这样:
table1
id | name |
---|---|
1 | name1 |
2 | name2 |
3 | name3 |
4 | name4 |
5 | name5 |
6 | name6 |
7 | name7 |
8 | name8 |
table2
id | table1_id | myfield |
---|---|---|
1 | 3 | test1 |
2 | 2 | test2 |
3 | 1 | test1 |
4 | 4 | test2 |
5 | 5 | null |
6 | 2 | null |
我想要实现的是获得一个 table,其中包含来自 table1
的所有行,并且仅包含来自 table2
.
这是我的查询:
select * from table1 as t1
left join table2 as t2 on t1.id = t2.table1_id
where myfield="test1"
group by t1.id
但这不是我想要达到的。
我想要实现的是从 table1
获取所有记录,并从 table2
的 table2.myfield="test1"
获取所有相关记录。另一个 table2.mytable
为空(如果它们不满足 table2.myfield="test1"
)。
非常感谢任何帮助!
谢谢!
将 where
子句移至 on
子句:
select * from table1 as t1
left join table2 as t2 on t1.id = t2.table1_id
and myfield="test1"
group by t1.id
顺便说一句:一些 DBMS 不允许 select *
和 group by
。所以 select id
和一些聚合值或删除 group by id