gpt4 book ai didi

mysql - 表连接 - 如果一个表没有对应的记录,则返回所有记录

转载 作者:行者123 更新时间:2023-11-29 07:52:23 24 4
gpt4 key购买 nike

w我有一个连接查询,即使 specimen_image_lookup.specimen_fk 没有 specimen.specimen_pk 的对应记录,我也想返回所有记录:

SELECT * FROM specimen, topography_index, morphology, specimen_image_lookup, image 
WHERE
SUBSTRING(specimen.topography_index, 2, 2) = topography_index.topography_index_code
AND
morphology.morphology_code = specimen.snop_code
AND
specimen_image_lookup.specimen_fk = specimen.specimen_pk AND image.image_pk = specimen_image_lookup.image_fk
AND
topography_index.topography_index_code IN('".implode("','",$sub_cat)."')
GROUP BY
specimen.specimen_pk

即使在specimen_image_lookup没有specimen_pk记录的情况下,如何修改此查询以返回所有记录?

最佳答案

您必须对该表以及图像表使用外部联接,因为图像表和该表之间有一个联接,您所说的表可能没有相关记录:

select *
from specimen
join topography_index
on substring(specimen.topography_index, 2, 2) =
topography_index.topography_index_code
join morphology
on morphology.morphology_code = specimen.snop_code
left join specimen_image_lookup
on specimen_image_lookup.specimen_fk = specimen.specimen_pk
left join image
on image.image_pk = specimen_image_lookup.image_fk
where topography_index.topography_index_code in ('".implode("', '",$sub_cat)."')

一般来说,对所有连接条件使用连接子句也是一个好主意。

我删除了你的 GROUP BY 子句,因为你的 SELECT 列表中没有聚合函数,并且语法错误,在除 MySQL 之外的任何数据库中它都会返回错误。仅当您要聚合某些内容时才使用 GROUP BY 子句。

关于mysql - 表连接 - 如果一个表没有对应的记录,则返回所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26091475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com