sql how to combine three queries from two tables into one query

后端 未结 4 830
误落风尘
误落风尘 2021-01-23 02:36

i have the following two tables:

Table1

id  name
---------
A3  B2
A3  B400
A5  B100
A7  B200
A8  B6
A8  B2
A8  B3

and

4条回答
  •  灰色年华
    2021-01-23 02:53

    I think you can use a query like the following:

    SELECT DISTINCT IF(name2 IS NULL, name, ID) AS ID,
           IF(name2 IS NULL, name, Company) AS Company,
           IF(name2 IS NULL, 'NOT FOUND', 'FOUND') AS Status
    FROM (       
       SELECT DISTINCT 
              CASE 
                 WHEN t1.id = t2.id THEN t1.id 
                 WHEN t1.name = t2.name THEN t2.id
                 ELSE t1.id
              END AS ID, 
              CASE 
                 WHEN t1.id = t2.id THEN t2.company
                 WHEN t1.name = t2.name THEN t2.company
                 ELSE t1.name
              END AS Company,
              t1.name,
              (SELECT Table2.name
               FROM Table2
               WHERE Table2.name = t1.name LIMIT 1) AS name2
       FROM Table1 AS t1
       LEFT JOIN Table2 AS t2 ON (t1.id = t2.id) OR (t1.name = t2.name)) AS t
    ORDER BY ID;
    

    The query use a single LEFT JOIN operation plus a correlated subquery.

    Demo here

提交回复
热议问题