Отдельный MySQL-запрос, возвращающий все записи - PullRequest
0 голосов
/ 24 октября 2009

У меня есть таблица, user_quotes, с полями quotes_id, quotes_user, quotes_desc, quotes_date, quotes_status и quotes_location. При этом quotes_user допускает дублирование записей. Когда я выполняю свой запрос, я пытаюсь избежать дублирования записей quotes_user. Поэтому я выполнил запрос вот так:

select distinct quotes_user from user_quotes;

Этот запрос возвращает только поле quotes_user. Как я могу получить все другие записи, используя distinct quotes_user.

Я пробовал с этим,

select distinct quotes_user, quotes_desc, quotes_date, quotes_status from user_quotes;

Не избежать дублирования quotes_user.

Если я использую,

select distinct quotes_user, * from user_quotes;

Я получаю ошибку MySQL,

В вашем синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '* FROM user_quotes.

Как я могу получить все записи, используя select selected одного столбца в одной таблице? Я храню адрес электронной почты в поле. Тип данных varchar.

Примечание: пожалуйста, не предлагайте мне другие типы, такие как группировка или другое. Мне нужно знать, как я могу получить записи, используя только distinct.

Ответы [ 3 ]

2 голосов
/ 24 октября 2009

Вы говорите, что хотите получить другие поля, но вы не указали , как SQL должен знать , какие значения нужно извлечь для других полей, для каждого отдельного значения quotes_user.

Чтобы показать, что вы хотите, я имею в виду, рассмотрим этот пример:

+-------------+---------------+
| quotes_user | email_address |
+-------------+---------------+
| user1       | email1        |
| user1       | email2        |
| user2       | email3        |
| user2       | email4        |
| user2       | email5        |
| user3       | email6        |
+-------------+---------------+

Теперь, если вы просто хотели quotes_user, результат, очевидно, будет:

+-------------+
| quotes_user |
+-------------+
| user1       |
| user2       |
| user3       |
+-------------+

Но если вам нужны и другие поля, вам необходимо решить, например, иметь ли email1 или email2 для строки user1.

Возможно, вам нужно объединить значения других полей вместе. В этом случае я бы предложил использовать агрегатную функцию GROUP_CONCAT с GROUP BY quotes_user.

Я не уверен, почему вы хотите избежать использования GROUP BY, хотя. Возможно, если бы вы могли объяснить это, мы могли бы помочь больше.

2 голосов
/ 24 октября 2009

В дополнение к тому, что уже было сказано, следует подчеркнуть, что ключевое слово DISTINCT 1002 * не может дать вам отдельные результаты для отдельного столбца при выборе нескольких столбцов. Вы получите четкие строки из, в вашем случае, 4 столбца. То, что вы наблюдаете, является ожидаемым, стандартным поведением DISTINCT.

0 голосов
/ 24 октября 2009

Похоже, что quotes_user должен быть внешним ключом, таким как user_id, вероятно, для вашей пользовательской таблицы. Затем вы можете запросить user_quotes по user_id, возвращая все кавычки для этого пользователя. Ваш пользовательский интерфейс может затем отформатировать все кавычки для каждого пользователя, на самом деле это не похоже на проблему MySql.

...