mysql — выбор людей, родившихся после определенного года

#mysql #mysql-5.7

#mysql #mysql-5.7

Вопрос:

У меня есть таблица сотрудников, которая включает столбец birth_day, а также ПЕРВИЧНЫЙ КЛЮЧ emp_ID (идентификатор сотрудника). Существует также другая таблица с именем Works_With с emp_ID сотрудника и total_sales по employee

Что я хочу сделать, так это выбрать 5 лучших сотрудников, родившихся после определенного года, то есть 1970 года.

Как бы я поступил..

Я думаю, что это было так, но не сработало

 SELECT total_sales
FROM works_with
WHERE employee.birth_day => '1970/MM/DD' LIMIT 5 DESC;
  

Есть предложения?

Ответ №1:

Если ваш birth_day столбец содержит дату и время, это должно сработать:

 SELECT employee.emp_ID, total_sales
FROM works_with
INNER JOIN employee
ON works_with.emp_ID = employee.emp_id
       AND year(employee.birth_day) >= 1970 
ORDER BY total_sales DESC
LIMIT 5;
  

Комментарии:

1. Это ДАТА в ГГГГ / ММ / ДД. Необходимо ли для этого ВНУТРЕННЕЕ соединение?

2. Поскольку вы объединяете данные из двух таблиц, вам необходимо объединить их, либо явно (с помощью JOIN … ВКЛЮЧЕНО) или неявно (несколько таблиц в FROM … ГДЕ). Afaik, синтаксис неявного соединения не рекомендуется. В любом случае, в вашем запросе выше таблица employee отсутствует в предложении FROM , поэтому вы не можете использовать его столбцы в предложении WHERE .

3. Что такое => ? И обратите внимание, что ОГРАНИЧЕНИЕ без ORDER BY довольно бессмысленно

4. Вы абсолютно правы. Первая — опечатка, вторая, которую я просто скопировал из исходного утверждения, не задумываясь об этом, поскольку я сосредоточился на объединении. Мой плохой, я отредактирую его.