2016-05-18 2 views
2

Я просто обновился до 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.

+0

Почему у вас есть дубликаты фильмов? Если у вас нет ОСНОВНОГО КЛЮЧА, то, что касается СУБД, у вас нет таблицы. – Strawberry

+0

@Strawberry Это для задания в школе. Мы назначили плохие данные для задания. : | К сожалению, нам нужно возвращать не дублированные строки. Все работало нормально до 5.7 .. но я не могу понизить, потому что мне нужны некоторые из новых функций, которые он предоставляет. – Alex

+1

GROUP BY предназначен для работы с агрегатными функциями. SELECT DISTINCT предназначен для использования там, где не требуется агрегация. – Strawberry

ответ

0

Я считаю, что было бы легко использовать ключевое слово distinct

SELECT distinct movies.* 
FROM movies 
WHERE movies.title = 'example' 
Смежные вопросы