我有两个名为mp_Blogs
和mp_BlogCategories
mp_blog
包含列和值
ItemID ModuleID
3 11
4 11
5 13
mp_BlogCategories
包含列和值
CategoryID ModuleID
1 11
2 11
3 13
我需要像这样的输出
ItemID CategoryID
3 1
4 2
5 3
我使用了这个查询
SELECT a.[ItemID],b.[CategoryID]
from [mp_Blogs] a
join [mp_BlogCategories] b
on a.ModuleID=b.ModuleID
但它以不同的方式出现
ItemID CategoryID
3 1
4 1
3 2
4 2
5 3
我也使用了groupby函数,但输出和以前一样,查询中有任何错误 如何获得我的原始输出
SELECT a.[ItemID],b.[CategoryID]
from [mp_Blogs] a
join [mp_BlogCategories] b
on a.ModuleID=b.ModuleID
group by b.CategoryID,a.ItemID
答案 0 :(得分:0)
您的查询正在正常执行,但是您的表中的数据存在问题,因为您可以看到该表包含11个id两次,即它给出的结果是这样的。最好查看表格中的数据。
答案 1 :(得分:0)
从输出看,数据似乎有问题,而不是查询。
答案 2 :(得分:0)
阅读评论后,两个表中都缺少唯一键 所以我建议你在两个表中添加键以达到你的结果。
怎么样 - 在mysql中测试工作正常。
-- id column primary key in mp_blog table.
create table mp_blog(id smallint(5),ItemID smallint(5),
ModuleID smallint(5),constraint mp_blog_id primary key(id));
insert into mp_Blog values(1,3,11),(2,4,11),(3,5,13);
-- id column foreign key references to mp_blog primary key id.
create table mp_BlogCategories(id smallint(5),CategoryID smallint(5),
ModuleID smallint(5),constraint fk_mp_blogc foreign key(id) references mp_blog(id));
insert into mp_BlogCategories values(1,1,11),(2,2,11),(3,3,13);
-- finally what you are trying to achieve..
select b.itemid,bc.categoryid
from mp_blog b INNER JOIN mp_BlogCategories bc
on b.id=bc.id;
ItemID CategoryID
3 1
4 2
5 3