繁体   English   中英

如果联接字段值在另一个表中不存在,则从JOIN查询中获取默认值

[英]Get default value from JOIN query if join field value doesn't exist in another table

我有两个表customersreviews 结构是这样的:

顾客:-

|---------------------------------|
|  id  |         name             |
|---------------------------------|
|   1  |       Thutmekri          |
|---------------------------------|
|   3  |        Conan             |
|---------------------------------|

评论: -

|-------------------------------------------|
|   id   |   business_id  |    customer_id  |
|-------------------------------------------|
|   1    |       1        |        1        |
|-------------------------------------------|
|   2    |       1        |        2        |
|-------------------------------------------|
|   3    |       1        |        3        |
|-------------------------------------------|

reviewscustomercustomer_idid

联接查询,

SELECT customers.name, reviews.id as review_id 
FROM customers, reviews 
WHERE customers.id = reviews.customer_id

返回这样的数据集:

|----------------------------------|
|    review_id  |      name        |
|----------------------------------|
|       1       |      Thutmekri   |
|----------------------------------|
|       3       |      Conan       |
|----------------------------------|

但我希望它返回:

|----------------------------------|
|    review_id  |      name        |
|----------------------------------|
|       1       |      Thutmekri   |
|----------------------------------|
|       2       |      N/A         |
|----------------------------------|
|       3       |      Conan       |
|----------------------------------|

对于评论中的customer_id(客户表中没有任何数据),我希望显示“ N / A”。 我该怎么做?

以下查询也无济于事

SELECT reviews.id as review_id, COALESCE( name, 'N/A' )
FROM customers, reviews
WHERE customers.id = reviews.customer_id

使用左联接并切换联接中表的顺序:

SELECT
    r.id AS review_id,
    COALESCE(c.name, 'N/A') AS name
FROM reviews r
LEFT JOIN customers c
    ON c.id = r.customer_id;

SQLFiddle

尝试这个 :

SELECT r.id  as review_id, COALESCE( c.name, 'N/A' ) FROM reviews r
LEFT JOIN customers c ON c.id = r.customer_id

使用右外部联接可实现此目的:

SELECT
    reviews.id as review_id,
    COALESCE(name, 'N/A' )
FROM customers
RIGHT JOIN reviews
    ON customers.id = reviews.customer_id;

您可以使用以下查询

选择R.id AS review_id,COALESCE(C.name,'N / A')AS名称来自评论R LEFT JOIN客户C ON R.customer_id = C.id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM