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 获取所有记录,并从 table2table2.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