Получить все поля из одной таблицы, используя INNER JOIN? - PullRequest
4 голосов
/ 02 октября 2010

Я хочу получить все поля из одной таблицы и использовать DISTINCT со второй таблицей.

У меня есть это:

SELECT stats.*, 
DISTINCT(visit_log.blog_id) AS bid 
FROM stats 
INNER JOIN visit_log ON stats.blog_id = visit_log.blog_id

Но я получаю эту ошибку:

В вашем синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который следует использовать рядом с 'DISTINCT (visit_log.blog_id) как ставка от статистики

Есть идеи?

Ответы [ 4 ]

7 голосов
/ 02 октября 2010

Вместо объединения с visit_log вы можете создать производную таблицу, содержащую только отдельные значения blog_id.

select stats.*, v.blog_id 
from stats 
inner join ( select distinct blog_id from visit_log where stats.blog_id = visit_log.blog_id ) as v
1 голос
/ 02 октября 2010
SELECT stats.*, dr.blog_id
FROM stats
INNER JOIN (SELECT DISTINCT(visit_log.blog_id) AS bid FROM visit_log) AS dr 
      ON stats.blog_id = dr.blog_id
0 голосов
/ 22 апреля 2015
select * from visit_log v where v.blog_id in/= (select s.blog_id from stats s)
0 голосов
/ 02 октября 2010

Вы выбираете только blog_id из visit_log, который является столбцом, к которому вы подключаетесь Так что ваш запрос очень похож на:

select * 
from stats s 
where 
exists (select null from visit_log v where s.blog_id = v.blog_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...