Использование Distinct с * - PullRequest
1 голос
/ 21 ноября 2010

У меня возникли проблемы с использованием различных с *.У меня есть таблица, которая в качестве объединения, и я пытаюсь сделать заявление, как:

SELECT DISTINCT Name, * FROM table_a JOIN table_a.id=table_b.id WHERE status=1

Но это не позволяет мне сделать это.Есть ли способ использовать Distinct с * option?

Ответы [ 4 ]

1 голос
/ 21 ноября 2010

DISTINCT * вероятно вернет все строки, потому что они различны: -)

Чтобы получить все разные имена, используйте DISTINCT name или для получения некоторой статистики об именах (например, количество) используйте SELECT name, COUNT(*) FROM ... GROUP BY name.

1 голос
/ 21 ноября 2010

У меня нет доступа для проверки этого прямо сейчас, но я подозреваю, что проблема не в distinct, а в том, что у вас есть столбцы в каждой таблице с одинаковыми именами (например, id), и это не ' Не знаю, какой из двух конфликтующих столбцов выбрать. Изменится ли он, если вы сделаете select distinct table_a.*, table_b.* ...?

0 голосов
/ 22 апреля 2012

В основном решение больше похоже на это:

SELECT *
FROM table_a, table_b
JOIN table_a.id = table_b.id
WHERE status = 1
GROUP BY table_a.name

Это полезно, если вы хотите избежать перечисления атрибутов.Когда вы это сделаете, и отношение изменится (один атрибут удален или добавлен), ваш запрос не будет работать.

Прочитайте это: MySQL 8.3.1.13.DISTINCT Оптимизация

0 голосов
/ 21 ноября 2010

Непонятно, что вы хотите сделать.

Может быть, вы хотите вернуть только один столбец с заданным именем (не два столбца идентификатора).

В этом случае стандартный SQLзапрос выглядит так:

SELECT * FROM table_a JOIN table_b USING (id) WHERE status=1

Ключевое слово DISTINCT означает, что после выполнения выбора удаляются дублирующиеся строки (не дублирующиеся имена столбцов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...