SELECT A.id, A.name, B.id, B.order_no FROM table1 A LEFT JOIN table2 B ON A.id=B.table1_id;
上面的代码中,首先使用SELECT语句查询A表和B表的相关字段,其中A表包含id和name字段,B表包含id和order_no字段。接下来使用LEFT JOIN连接A表和B表,其中A.id和B.table1_id进行关联。使用LEFT JOIN而不是INNER JOIN是为了不丢失左边的数据。
id | name | id | order_no -----|-------|-------|---------- 1 | John | 1 | 100 2 | Mary | 2 | 200 3 | James | NULL | NULL
在上图中,可以看到虽然A表中有三条记录,但只有前两条记录与B表中的数据关联,因为第三条记录在B表中没有匹配的数据。可以使用WHERE子句来限制查询结果。
SELECT A.id, A.name, B.id, B.order_no FROM table1 A LEFT JOIN table2 B ON A.id=B.table1_id WHERE B.order_no IS NOT NULL;
这次添加了WHERE子句来限制查询结果,只显示B表中order_no字段不为空的记录。结果如下所示:
id | name | id | order_no -----|-------|-------|---------- 1 | John | 1 | 100 2 | Mary | 2 | 200
通过使用MySQL查询一对多关系的方法,可以轻松地在多个表之间进行数据关联,从而满足实际应用中的需求。