#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. Вы абсолютно правы. Первая — опечатка, вторая, которую я просто скопировал из исходного утверждения, не задумываясь об этом, поскольку я сосредоточился на объединении. Мой плохой, я отредактирую его.