Вопрос

У меня есть таблица Работы и Компании , и я хочу извлечь 20 вакансий, которые соответствуют следующим критериям:

<Ол>
  • Работа только от двух (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, поэтому понимаю, что может быть более разумный способ сделать это вместо UNION, поэтому любые предложения по улучшению обязательно приветствуются.

    Это было полезно?

    Решение

    Цитировать документы ,

      

    Чтобы применить ORDER BY или LIMIT к   индивидуальный 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