带有 IF 条件的 MySQL 连接查询

标签 mysql sql

我有 2 个表客户和公司

公司

COMP_ID | COMP_NAME  
1       | Google      
2       | Facebook    

客户

CUST_ID | COMP_ID | CUST_NAME    
1       | 1       | John         
2       | 2       | NULL          
3       | 2       | Rob           

我想编写一个查询以将 CUST_NAME 显示为 CONTACT 但如果 CUST_NAMENULL,则显示COMP_NAME 作为CONTACT

最佳答案

使用COALESCE :

select cs.cust_id, coalesce(cs.cust_name, co.comp_name) contact
from customer cs
inner join company co
on cs.comp_id = co.comp_id;

如果您在 cust_name 中有空字符串,请执行此操作:

select cs.cust_id, coalesce(nullif(cs.cust_name,''), co.comp_name) contact
from t_customer cs
inner join t_company co
on cs.comp_id = co.comp_id;

Live Demo

关于带有 IF 条件的 MySQL 连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41943037/

相关文章:

mysql - 在 1 次查询中选择 5 条前一条记录、中间条和 5 条后一条记录

mysql - SQL "replace"id 与客户纪元

php - MySQL 在 URL 中发布处理父项的表

c++ - 运行查询后如何从sql表中获取列

sql - 如何在 Postgres 中创建带有公共(public)前缀(即 tag_1、tag_2、tag_3)的字符串的序列号

php - 使用 eloquent laravel 获取连接表数据

c++ - MySQL: "Commands out of Sync"错误(C 连接器)

php - 必须捕获所有数量最多的产品

sql - 组合一些表,其中一些键是共同的,一些是缺失的

php - 如何防止 PHP 中的 SQL 注入(inject)?