mysql - SQL - 连接表 - 如果不匹配则返回 null

标签 mysql sql

晚上,我不确定我在这里问什么,但我会尽力解释。我不是 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/

相关文章:

php - MySQL INSERT --- 获取 ID (auto_increment) 如果一个值是唯一的

javascript - AJAX 调用失败,ReferenceError 分配给未声明的变量 PostRPC

mysql - 在 MySQL 中的 CASE WHEN 查询期间出现语法错误

sql - 添加包含总计的汇总行

java - Hibernate:设置固定参数是一个好习惯吗?

php - 数据库 HTML 中的 TCPDF 图像不显示

mysql - 基于映射计算

sql - 仅当主键不存在时才将主键添加到 PostgreSQL 表

sql - 在 RDBMS 中实现灵活的关系——真正的权衡是什么?

mysql - 如何对MySQL中的 View 进行复杂的计算和更新?