繁体   English   中英

选择使用联接区分

[英]Select Distinct using a join

 select DISTINCT cid,cname,tid from colors c left join tags t on t.tname = c.cname; 

颜色:

cid cname

1红

2蓝色

3绿色

标签:

tid tname

1红

2红

3蓝色

4绿色

当前结果:

1红1

1红色2

2蓝色3

3绿色4

预期结果:

1红1

2蓝色3

3绿色4

该查询应符合您的预期结果

select cid,cname,tid
from colors c
left join tags t on t.tname = c.cname;
group by c.cid
select 
    cid, cname, tid
from
    colors c
        left join
    tags t ON t.tname = c.cname
GROUP BY c.cname,c.cid,t.tid;

GROUP BY标签名称

select DISTINCT cid,cname,tid
from colors c
left join tags t on t.tname = c.cname;
GROUP BY t.name

我没有mysql尝试此操作,但这应该可以帮助您。 还有一件事是您不能直接在您的查询中使用tid ,而需要对其进行计数。

select  cid, cname, count(tid)
    from Color c
    left join tags t on t.name = c.cname
GROUP BY cname;

这是sqlFiddle

使用group by

select cid,cname,tid
from colors c
left join tags t on t.tname = c.cname
group by cid,cname,tid;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM