الجمع بين النقابات والحد من عمليات الاستعلام MySQL

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

  •  06-07-2019
  •  | 
  •  

سؤال

انا املك وظائف و شركات الجدول ، وأريد استخراج 20 وظيفة تفي بالمعايير التالية:

  1. وظائف فقط من شركتين (2)
  2. يمكن أن يكون هناك على الأكثر 10 وظائف لكل شركة

لقد جربت ما يلي SELECT مع UNION DISTINCT, ، لكن المشكلة هي أن LIMIT 0,10 ينطبق على مجموعة النتائج بأكملها. أريدها أن تنطبق على كل من الشركات.

إذا لم تكن هناك 10 وظائف لكل شركة ، فيجب أن يعيد الاستعلام جميع الوظائف التي يجدها.

SELECT c.name, j.title, j.`desc`, j.link 
  FROM jobs_job j
INNER JOIN companies_company c ON j.company_id = c.id
WHERE c.name IN ('Company1')
UNION DISTINCT
SELECT c.name, j.title, j.`desc`, j.link 
  FROM jobs_job j
INNER JOIN companies_company c ON j.company_id = c.id
WHERE c.name IN ('Company2')
ORDER by name, title
LIMIT 0,10

أنا جديد على MySQL ، لذلك أدرك أنه قد تكون هناك طريقة أكثر ذكاءً للقيام بذلك بدلاً من الاتحاد ، لذلك فإن أي اقتراحات للتحسينات هي بالتأكيد موضع ترحيب.

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

المحلول

اقتباس المستندات,

لتطبيق الطلب أو الحد من اختيار فرد ، ضع البند داخل الأقواس التي تحيط بـ SELECT:

(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top