أسماء الأعمدة لجدول شكلتها UNION
سؤال
وبالنظر الى اثنين من الجداول بسيطة مثل ذلك:
create table R(foo text);
create table S(bar text);
إذا كان لي أن نقابة معا في استعلام، ماذا أسميه العمود؟
select T.????
from (
select foo
from R
union
select bar
from S) as T;
والآن، في الخلية، ويمكنني أن يبدو الرجوع إلى عمود T ك "فو" - اسم العمود مطابقة للعلاقة الأولى في الاتحاد. في sqlite3، ومع ذلك، لا يبدو أن العمل. هل هناك طريقة للقيام بذلك وهذا هو المعيار في جميع تطبيقات SQL؟
إذا لم يكن كذلك، فكيف لمجرد sqlite3؟
وتصحيح: sqlite3 لا تسمح لك للإشارة إلى العمود T ك 'فو' على كل حال! عفوا!
المحلول
وعلى الرغم من وجود قاعدة مكتوبة، يمكننا استخدام أسماء الأعمدة من الاستعلام الفرعي الأول في استعلام توحيد لجلب نتائج الاتحاد.
نصائح أخرى
وفي محاولة لإعطاء اسم مستعار إلى أعمدة؛
select T.Col1
from (
select foo as Col1
from R
union
select bar as Col1
from S) as T;
وأو إذا كان اسم العمود هو ليس من الضروري ثم T. * سوف يكون كافيا.
ما عليك سوى الأسماء المستعارة العمود فقط في أول حدد (اختبار في SQL Server 2008 R2)
select T.Col1
from (
select 'val1' as Col1
union
select 'val2'
union
select 'val3'
) as T;