Я просто обновился до MySQL 5.7 и, к сожалению, для меня, некоторые функции GROUP BY
исчезли. Я хотел выбрать все фильмы из моей таблицы movies
до тех пор, пока movies.id
типа int
не является дубликатом. Мой предыдущий запрос в MySQL 5.6 был:MySQL 5.7 возвращает все столбцы таблицы на основе отдельного столбца
SELECT *
FROM movies
WHERE movies.title LIKE '%example%'
GROUP BY movies.id
Если бы я имел два фильма с тем же идентификатором, он будет показывать только один фильм, вместо этого фильма и его дубликатов.
Когда я обновился до MySQL 5.7, GROUP BY
дал мне ошибки, и мне вместо этого сказали использовать ORDER BY
. Однако этот вопрос:
SELECT *
FROM movies
WHERE movies.title LIKE '%example%'
ORDER BY movies.id
Возвращает дубликаты фильмов. Итак, есть ли способ отфильтровать это и возвращать только строку, если она не является дубликатом?
Edit: Например, если это мой movies
стол:
movies
==================
| id | title |
==================
| 1 | example |
------------------
| 2 | example |
------------------
| 1 | example |
------------------
Вот выход каждого запроса:
Previous query result (with MySQL 5.6)
=======
1 | example
2 | example
New query result (with MySQL 5.7 and ORDER BY)
=======
1 | example
1 | example
2 | example
Я хочу, чтобы конечный результат не содержат никаких дубликатов (так что результат должен выглядеть как первый результат запроса).
Редактирование 2: Я понимаю, что я как бы злоупотреблял способом обработки MySQL GROUP BY
. К сожалению, у меня нет большого опыта работы с MySQL и получил этот ответ от StackOverflow. Я хотел бы просто вернуть все столбцы в моей таблице, которые не содержат дубликатов id
.
Почему у вас есть дубликаты фильмов? Если у вас нет ОСНОВНОГО КЛЮЧА, то, что касается СУБД, у вас нет таблицы. – Strawberry
@Strawberry Это для задания в школе. Мы назначили плохие данные для задания. : | К сожалению, нам нужно возвращать не дублированные строки. Все работало нормально до 5.7 .. но я не могу понизить, потому что мне нужны некоторые из новых функций, которые он предоставляет. – Alex
GROUP BY предназначен для работы с агрегатными функциями. SELECT DISTINCT предназначен для использования там, где не требуется агрегация. – Strawberry