Vraag Combinatie van UNION- en LIMIT-bewerkingen in MySQL-query


ik heb een Jobs en een bedrijven tabel en ik wil 20 taken uitpakken die aan de volgende criteria voldoen:

  1. Banen alleen van twee (2) genoemde bedrijven
  2. Er kunnen maximaal 10 banen per bedrijf zijn

Ik heb het volgende geprobeerd SELECT met UNION DISTINCT, maar het probleem is dat de LIMIT 0,10 is van toepassing op de hele resultaatset. Ik wil dat het van toepassing is op elk van de bedrijven.

Als er geen taken per bedrijf zijn, moet de query alle gevonden jobs retourneren.

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

Ik ben nieuw in MySQL, dus besef dat er misschien een slimmere manier is om dit te doen in plaats van met UNION, dus alle suggesties voor verbeteringen zijn zeker welkom.


50
2017-09-12 15:06


oorsprong


antwoorden:


citeren de documenten,

Om ORDER BY of LIMIT toe te passen op een   individuele SELECT, plaats de clausule   tussen haakjes die omsluiten   de 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);

127
2017-09-12 15:30