سؤال

mysql> select count(id) total from applicants;
+-------+
| total |
+-------+
|     0 |
+-------+
1 row in set (0.00 sec)

mysql> select count(id) total from jobs;
+-------+
| total |
+-------+
|     0 |
+-------+
1 row in set (0.00 sec)

mysql> select count(id) total from applicants union select count(id) total from
jobs;
+-------+
| total |
+-------+
|     0 |
+-------+
1 row in set (0.00 sec)

mysql>

أليس من المفترض ان يكون هناك اثنين من السجلات مع "0" لها قيمة ؟

هل كانت مفيدة؟

المحلول

والاتحاد جميع سيعطي بيانين. محاولات الاتحاد لدمج الإدخالات، أو بدلا من ذلك، إزالة الصفوف المكررة.

نصائح أخرى

نقلا عن دليل الخلية :

السلوك الافتراضي الاتحاد هو أن الصفوف المكررة يتم إزالتها من النتيجة.الاختياري متميزة الكلمة ليس له أي تأثير غير افتراضي لأنه يحدد أيضا مكررة الصف إزالة.مع اختياري جميع الكلمات الرئيسية المكررة في الصف إزالة لا تحدث النتيجة يشمل جميع صفوف مطابقة من كل حدد البيانات.

مما يعني أنه مع فقط UNION, إذا اثنين من الخطوط لها نفس القيمة ، واحد منهم لن تعاد :

mysql> select 1 union select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

ولكن ، إذا كان استخدام UNION ALL, مكررة لا تتم إزالة :

mysql> select 1 union all select 1;
+---+
| 1 |
+---+
| 1 |
| 1 |
+---+
2 rows in set (0.00 sec)

وUNION إزالة التكرارات. محاولة UNION ALL بدلا من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top