晚上,我不确定我在这里问什么,但我会尽力解释。我不是 SQL 方面最好的人,但我确实尝试过...
SELECT
qu.job_id, qu.engineer_id, qu.id AS `quote_id`,
jb.author, jb.image_ref, jb.job_title
FROM
`ecom_quotes` qu, `ecom_jobs` jb
WHERE
jb.author = 1
AND
qu.job_id = jb.image_ref
GROUP BY
jb.image_ref
我使用上面的内容列出了用户发布的职位,并根据职位 ID 从其他表中获取其他信息。
问题是,如果某个职位没有发布报价,则不会显示 (qu.job_id = jb.image_ref)。
因此,作为快速修复(或者我是这么认为),我将其替换为
( ( qu.job_id = jb.image_ref ) OR ( jb.image_ref != '' ) )
它确实有效,但当没有与之关联的报价时,它会返回一个报价 ID。
有什么我可以做的吗?
最佳答案
您需要使用 LEFT JOIN
.
即使 ecom_quotes
中没有匹配的记录,这仍然会返回 ecom_jobs
的记录。
编辑:交换表格的顺序...
SELECT
qu.job_id, qu.engineer_id, qu.id AS `quote_id`,
jb.author, jb.image_ref, jb.job_title
FROM
`ecom_jobs` jb
LEFT JOIN `ecom_quotes` qu ON qu.job_id = jb.image_ref
WHERE
jb.author = 1
GROUP BY
jb.image_re
关于mysql - SQL - 连接表 - 如果不匹配则返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8934257/