احصل على عدد نقاط النتائج للحصول على بيانات تحديد الفردية مع الاتحاد الكل في MySQL عند استخدام الحد

StackOverflow https://stackoverflow.com/questions/1318205

  •  19-09-2019
  •  | 
  •  

سؤال

أحتاج إلى الحصول على عدد الصفات الخاصة ببيانات تحديد الفردية في الاتحاد، كل الاستعلام المحدد الذي يستخدم الحد. مستندات MySQL واضحة جدا حول الحصول على عدد الصف العالمي للاستعلام (ضع تختار الفرد بين قوسين ووضع SQL_CALC_FOUND_ROWS فقط في أول بيان، ثم الحصول على found_rows () الطريقة المعتادة). ومع ذلك، أنا أيضا بحاجة أيضا إلى عدد النتائج الناتجة عن فرد حدد البيانات. الاستعلام، المبسطة:

(SELECT SQL_CALC_FOUND_ROWS `field1`,`field2` FROM `db`.`table1` WHERE `id`>1000)
UNION ALL
(SELECT `field1`,`field2` FROM `db`.`table2` WHERE `id`>1000)
UNION ALL
...
(SELECT `field1`,`field2` FROM `db`.`tableN` WHERE `id`>1000)
LIMIT 0,10

إذا تم وضع SQL_CALC_FOUND_ROWS في كل حدد العبارة "استخدام غير صحيح / موضع" SQL_CALC_FOUND_ROWS ". جوجل هذا الكثير، وقراءة الرسائل ذات الصلة هنا، دون جدوى. قد يكون شيء بسيط حقا، لا أستطيع الحصول على ذهني حولها.

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

المحلول

يمكنك الحصول على هذا الخطأ لأنه يمكن استخدام SQL_CALC_FOUND_ROWS على استعلام لإرجاع رقم واحد في Found_rows ().

يمكنك استعادة التهم في القيام بذلك:

SELECT 'table1' AS tablename, COUNT(1) AS rowcount FROM table1 WHERE id > 1
UNION ALL
SELECT 'table2' AS tablename, COUNT(1) AS rowcount FROM table2 WHERE id > 1
...
SELECT 'tableN' AS tablename, COUNT(1) AS rowcount FROM tableN WHERE id > 1

إذا كان ذلك يساعد.

إذا كنت ترغب في إرجاع الصفوف من الجداول مع عدد ثم تعديلها:

SELECT field1, field2, (SELECT COUNT(1) FROM table1 WHERE id > 1000) FROM table1 WHERE id > 1000
UNION ALL
SELECT field1, field2, (SELECT COUNT(1) FROM table2 WHERE id > 1000) FROM table2 WHERE id > 1000
...
SELECT field1, field2, (SELECT COUNT(1) FROM tableN WHERE id > 1000) FROM tableN WHERE id > 1000

من سؤالك، ليس من الواضح أن ما تحاول تحقيقه بدقة.

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