我有两张桌子,例如:
Table A Table B
+---------------+ +------------------------------+
| ID NAME | | ID TYPE DATE |
+---------------+ +------------------------------+
| 001 A | | 001 URGE 2024-01-01 |
| 002 B | | 001 UPDATE 2024-01-02 |
| 003 C | | 002 UPDATE 2024-01-03 |
+---------------+ +------------------------------+
我的预期结果是:
+-------------------------------------+
| ID NAME TYPE DATE |
+-------------------------------------+
| 001 A URGE 2024-01-01 |
| 002 B - - |
| 003 C - - |
+-------------------------------------+
我想选择表A中的所有结果,并以条件“TYPE = 'URGE'”连接表B并输出DATE,否则DATE列输出NULL。 SQL应该怎么写?非常感谢!
你可以尝试吗:
SELECT
A.ID,
A.NAME,
CASE WHEN B.TYPE = 'URGE' THEN B.TYPE ELSE '-' END AS TYPE,
CASE WHEN B.TYPE = 'URGE' THEN B.DATE ELSE NULL END AS DATE
FROM
TableA A
LEFT JOIN
TableB B ON A.ID = B.ID AND B.TYPE = 'URGE';
SELECT A.ID, A.NAME, COALESCE(B.TYPE, '-') AS TYPE, COALESCE(B.DATE, '-') AS DATE FROM TableA A LEFT JOIN TableB B ON A.ID = B.ID并且 B.TYPE = '敦促'