使用INNER JOIN从一个表中获取所有字段?

时间:2010-10-02 10:57:06

标签: mysql inner-join

我想从一个表中获取所有字段,并在第二个表中使用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)附近使用正确的语法。来自第1行的AS统计数据INNER JOIN visit_log ON stats.blog'

有什么想法吗?

4 个答案:

答案 0 :(得分:7)

您可以构建仅包含不同blog_id值的派生表,而不是加入visit_log。

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 :(得分:1)

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

答案 2 :(得分:0)

您只从visit_log中选择blog_id,这是您要加入的列。所以你的查询很像:

select * 
from stats s 
where 
exists (select null from visit_log v where s.blog_id = v.blog_id)

答案 3 :(得分:0)

select * from visit_log v where v.blog_id in/= (select s.blog_id from stats s)