对不起,我英语不好。
这是表格日志
Log
id action product_id table
1 Insert 1 product
2 Read null product
3 Update 1 product
这是餐桌产品
Product
id name
1 A
2 B
我想做的是从日志中获取所有行,但有一些条件。
我试着用:
select log.id,log.action,product.name from log,product where log.product_id = product.id;
但它只返回包含product\u id的行,我认为这是因为log的第2行与log.product\u id=product.id不匹配
有人能帮我吗?
2条答案
按热度按时间jjjwad0x1#
我不确定我是否正确回答了您的问题,但如果您希望在结果中也包含空值,可以执行左联接:
有关如何获取包含/不包含null的值的详细信息,请参见内部联接、外部联接、左联接、右联接。
vi4fp9gy2#
中以逗号分隔的表列表
FROM
子句表示CROSS JOIN.
添加WHERE
像你这样的从句,意味着INNER JOIN
. 你需要的是一个LEFT JOIN
.你应该改用传统的加入方式。您当前的查询:
重写为使用联接将如下所示:
但这不是您想要的,因为您想要
log
表格中要填写的信息来自product
table。为此,您将使用外部连接,即这里的左连接。方法如下: