晚上,我不知道我在这里问什么,但我会尽力解释。我不擅长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_jobs
中没有匹配的记录,此操作仍将返回ecom_quotes
的记录。
编辑:切换表格顺序。。。
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/