mysql 这个怎么写

数据库1 2 3 4
以1的某个字段a判断,是b则select查询获取2中字段C,是c则查询获取3中字段d,是d则查询获取4中字段e,这个该怎么写,谢谢

SELECT
    CASE a
        WHEN 'b' THEN (
            SELECT C
            FROM database2.table2
            WHERE condition
        )
        WHEN 'c' THEN (
            SELECT d
            FROM database3.table3
            WHERE condition
        )
        WHEN 'd' THEN (
            SELECT e
            FROM database4.table4
            WHERE condition
        )
        ELSE NULL
    END AS result
FROM database1.table1
WHERE condition;


你这到底是4个库还是4个表
表1里就一行数据吗
假如有4张表abcd

select case 
when a.aa='1' then b.bb 
when a.aa='2' then c.cc 
when a.aa='3' then d.dd 
else '' as aa 
from a

image-20220323220430886

  • 以下回答由chatgpt基于相关博客总结生成:

    我可以提供以下SQL语句实现多表连接查询:

    SELECT 
        CASE 
            WHEN t1.a = 'b' THEN t2.c 
            WHEN t1.a = 'c' THEN t3.d 
            WHEN t1.a = 'd' THEN t4.e 
            ELSE NULL END AS result 
    FROM table1 t1 
    LEFT JOIN table2 t2 ON t1.id = t2.id 
    LEFT JOIN table3 t3 ON t1.id = t3.id 
    LEFT JOIN table4 t4 ON t1.id = t4.id
    

    其中,假设table1有一个字段叫做a,其它表中需要查询的字段名为c、d、e,且关联字段均为id。当t1表中a字段的值为b时,查询t2表中c字段的值,当a字段为c时,查询t3表中d字段的值,当a字段为d时,查询t4表中e字段的值。

    以上SQL语句实现了多表连接查询,并且根据字段a的不同取值,查询不同的其它表中的字段。

    注意事项: 1. 在LEFT JOIN时,要保证关联字段的数据类型相同; 2. SQL语句大小写敏感,表名、字段名等要与实际数据相符; 3. 对于类似的查询操作,应该建立合适的索引,以提高查询效率。