クエリは結果セットを返します。これは、結果セットの列数と各列のデータ型によって「定義」されます。
UNIONまたはUNIONALL操作は、2つの結果セットを一緒に「追加」するように設計されています。そのためには、2つのクエリの結果セットが、返される列の数に関して同一である必要があり、各列のデータ型も同じである必要があります。
結果セットが少しずれている場合は、クエリを少しファッジして、結果セットを一致させることができます(列プレースホルダーとしていくつかのリテラルを追加します)
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
列の名前(または列または式に割り当てられたエイリアス)は重要ではないことに注意してください。ここで重要なのは、両方のクエリが5つの列を返し、各列の位置のデータ型が次のように一致することです:VARCHAR、VARCHAR、VARCHAR、INT、INT
SQLステートメントを開発するときは、返される結果セットを定義することが重要です。列の数、および各列のデータ型。
「UNION」または「UNIONALL」操作を使用するクエリを開発する場合、各クエリの結果セットは一致する必要があります。