الانتقال إلى المحتوى الرئيسي
يمكنك استخدام UNION مع تحديد UNION ALL أو UNION DISTINCT صراحةً. إذا لم تحدد ALL أو DISTINCT، فسيعتمد ذلك على الإعداد union_default_mode. ويتمثل الفرق بين UNION ALL وUNION DISTINCT في أن UNION DISTINCT يزيل القيم المكررة من نتيجة union، وهو مكافئ لعبارة SELECT DISTINCT من استعلام فرعي يحتوي على UNION ALL. يمكنك استخدام UNION لدمج أي عدد من استعلامات SELECT عبر ضم نتائجها. مثال:
Query
SELECT CounterID, 1 AS table, toInt64(count()) AS c
    FROM test.hits
    GROUP BY CounterID

UNION ALL

SELECT CounterID, 2 AS table, sum(Sign) AS c
    FROM test.visits
    GROUP BY CounterID
    HAVING c > 0
تُطابَق أعمدة النتيجة بحسب فهرسها (الترتيب داخل SELECT). وإذا لم تتطابق أسماء الأعمدة، فتُؤخذ أسماء النتيجة النهائية من الاستعلام الأول. يُجرى تحويل الأنواع في عمليات union. على سبيل المثال، إذا كان هناك استعلامان مدمجان يحتويان على الحقل نفسه من نوعين متوافقين، أحدهما Nullable والآخر غير Nullable، فإن UNION الناتج سيكون فيه هذا الحقل من النوع Nullable. يمكن إحاطة الاستعلامات التي تُشكّل أجزاءً من UNION بعلامتي (). ويُطبَّق ORDER BY وLIMIT على كل استعلام على حدة، وليس على النتيجة النهائية. وإذا كنت بحاجة إلى تطبيق تحويل على النتيجة النهائية، فيمكنك وضع جميع الاستعلامات التي تحتوي على UNION داخل استعلام فرعي في عبارة FROM. إذا استخدمت UNION من دون تحديد UNION ALL أو UNION DISTINCT صراحةً، فيمكنك تحديد وضع union باستخدام الإعداد union_default_mode. يمكن أن تكون قيم الإعداد ALL أو DISTINCT أو سلسلة فارغة. ومع ذلك، إذا استخدمت UNION مع ضبط union_default_mode على سلسلة فارغة، فسيؤدي ذلك إلى طرح استثناء. توضّح الأمثلة التالية نتائج الاستعلامات مع قيم إعداد مختلفة.
Query
SET union_default_mode = 'DISTINCT';
SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2;
Response
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
Query
SET union_default_mode = 'ALL';
SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2;
Response
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
يمكن تنفيذ الاستعلامات التي تشكّل جزءًا من UNION/UNION ALL/UNION DISTINCT بالتزامن، وقد تختلط نتائجها معًا. انظر أيضًا
آخر تعديل في ٢٥ يونيو ٢٠٢٦