• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Mysql join 多张表时查询结果出了问题

php 搞代码 3年前 (2022-01-23) 25次浏览 已收录 0个评论

<body>

因为公司产品的需求,现在要去实现一个功能,表A放的用户的基本信息,表B存的A表中用户的一些行为,表C和表B的性质一样。要求查询的时候可以按照B表或者C表中的count结果进行排序,于是就想到了join,可是出现了问题。

先贴出3张表的数据结构

<code>  CREATE TABLE `A` (  `id` int(11) NOT <i style="color:transparent">本#文来源gaodai$ma#com搞$$代**码网$</i><button>搞代gaodaima码</button>NULL auto_increment,  `username` varchar(255) default NULL,  PRIMARY KEY  (`id`),) ENGINE=MyISAM AUTO_INCREMENT=1;</code>
<code>  CREATE TABLE `B` (  `id` int(11) NOT NULL auto_increment,  `userid` int(11) default NULL,  `dosomething` varchar(255) default NULL,  PRIMARY KEY  (`id`),  KEY `userid` USING BTREE (`userid`)) ENGINE=MyISAM AUTO_INCREMENT=1;</code>
<code>  CREATE TABLE `C` (  `id` int(11) NOT NULL auto_increment,  `userid` int(11) default NULL,  `dosomething` varchar(255) default NULL,  PRIMARY KEY  (`id`),  KEY `userid` USING BTREE (`userid`)) ENGINE=MyISAM AUTO_INCREMENT=1;</code>

自己做出尝试,发现查询结果不一样

<code>SELECT u.id, COUNT(s.id) AS sapply, COUNT(uu.id) AS ftotal FROM A AS u RIGHT JOIN B AS s ON u.id = s.userid RIGHT JOIN C AS uu ON u.id = `uu`.`userid` GROUP BY `u`.`id` ORDER BY `ftotal` DESC LIMIT 10</code>

数据明显有问题,分开关联看结果

<code>SELECT u.id, COUNT(s.id) AS sapply FROM A AS u RIGHT JOIN B AS s ON u.id = s.userid GROUP BY `u`.`id` ORDER BY `sapply` DESC LIMIT 10</code>
<code>SELECT u.id, COUNT(uu.id) AS ftotal FROM A AS u RIGHT JOIN C AS uu ON u.id = uu.userid GROUP BY `u`.`id` ORDER BY `ftotal ` DESC LIMIT 10</code>

大家帮忙看看,这问题出在哪呢 第一条Sql语句也没有错误但是结果就是不对。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Mysql join 多张表时查询结果出了问题
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址