Duplication
如何在不使用 UNION ALL 或臨時表的情況下顯示每個儲存行兩次?
名為 的相關表
emp
包含以下數據:CREATE TEMPORARY TABLE emp AS SELECT * FROM ( VALUES (1,'A'), (2,'B'), (3,'C') ); ID Name -- ---- 1 A 2 B 3 C
數據操作操作的輸出或結果集應如下所示:
ID Name -- ---- 1 A 1 A 2 B 2 B 3 C 3 C
要求
輸出必須符合以下條件:
- 不使用與使用的 SELECT 語句關聯的 UNION ALL 運算符
- 不使用臨時表
- 不對現有表使用 UPDATE 操作
注意:這個場景是面試官向我提出的。
SELECT ta.id, ta.name FROM emp ta CROSS JOIN ( VALUES (1), (2) ) tb (id) ;
一種方法是
SELECT COALESCE(a.id, b.id) AS id, COALESCE(a.name, b.name) AS name FROM emp a FULL OUTER JOIN emp b ON 1=0 ORDER BY id;