的查詢返回一個結果,這是由在結果列的每列中的數據類型的數量和「定義」。
UNION或UNION ALL操作旨在將兩個結果集「附加」在一起;並且爲了做到這一點,來自兩個查詢的結果集必須在返回的列數方面相同,並且每列的數據類型也必須相同。
有時,當結果集是關閉的只是一點點,我們就可以矇混過關查詢了一下,使結果集匹配(添加一些文字作爲列的佔位符)
SELECT 'u' AS source
, u.first_name AS first_name
, u.last_name AS last_name
, u.employid AS employid
, u.manager AS manager
FROM $USER_TABLE u
WHERE u.username='$contextUser'
UNION ALL
SELECT 't' AS source
, t.some_string AS first_name
, t.some_otherstring AS last_name
, 0 AS employid
, 0 AS manager
FROM $TIMES_TABLE t
WHERE t.uid='$contextUser'
AND t.submitstatus=1
注意,姓名列(或分配給列或表達式的別名)並不重要;這裏重要的是,這兩個查詢返回五列,每列位置相匹配的數據類型:VARCHAR,VARCHAR,VARCHAR,INT,INT
當開發一個SQL語句,它定義什麼結果集將會是非常重要的被退回。多少列,以及每列的數據類型。
在開發使用「UNION」或「UNION ALL」操作的查詢時,每個查詢的結果集必須匹配。
我已經在stackoverflow搜索,我看到很多類似的例子,我不明白這就是爲什麼我要求幫助。 SORRY SIR! – rubberchicken