我正在 MySQL 中工作,必须编写一个选择查询。
我在四个表中有相关数据。现在,父表中可能有其子数据可能不存在于下级表中的数据。
我想编写一个查询来从所有四个表中获取数据,无论数据是否存在于子表中。
我尝试编写嵌套选择和连接,如下所示,但我没有获取数据。
select * from property p where p.Re_ID in
(select Re_id from entry e where e.Re_ID in
(select Re_id from category c where c.Re_ID in
(select id from re)))
请帮助我如何从所有 4 个表中获取数据。
最佳答案
如果 cir_registry
是主表,您可以从中进行选择,然后按照与 cir_registry
的远近顺序LEFT JOIN
其他表;
SELECT r.ID rId, r.Description rDescription, c.ID cId ...
...
p.Data_Type pDataType
FROM cir_registry r
LEFT JOIN cir_category c ON c.Registry_ID = r.ID
LEFT JOIN cir_entry e ON e.Category_ID = c.ID
LEFT JOIN cir_property p ON p.Entry_IDInSource = e.IDInSource
您还应该为上面的列添加别名,否则,例如,p.ID
和 c.ID
都将在结果集中显示为 ID
,并且您只能访问其中一个。
关于mysql - 在MySQL中选择查询多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717331/