mysql left join正在删除失败时比较的列?

oxcyiej7  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(330)

mysql表模式:entity(key为entityid)、post(key为entityid)、photo(key为entityid)
实体与post+photo表的比例是1:1,因为它们基本上是实体的子类别
sql请求:

SELECT * FROM entity
LEFT JOIN post ON post.entityId = entity.entityId
LEFT JOIN photo ON photo.entityId = entity.entityId

这将返回完整的架构,但对于没有照片的实体,返回的entityid为null。没有相应照片的每一行都将其entityid设置为null。
问题:在维护所有数据的同时,组合这些子组最干净的方法是什么?我只做了一个,普通的帖子连接,然后用另一个实体的照片连接,但是我的解决方案非常混乱,可能有更好的方法。

wpx232ag

wpx232ag1#

您需要显式地列出列。问题是列的名称相同。例如:

SELECT e.*, pid as post_id, ph.id as photo_id
FROM entity e LEFT JOIN
     post p
     ON p.entityId = e.entityId LEFT JOIN
     photo ph
     ON ph.entityId = e.entityId;

如果只有具有重复ID的列是 entityId 列,则可以使用 USING 子句(假设您的数据库支持它):

SELECT *
FROM entity e LEFT JOIN
     post p
     USING (entityId) LEFT JOIN
     photo ph
     USING (entityId)

相关问题