SELECT t.*,count(tbl_myr_share_comment.shareId) as count FROM
`tbl_myr_share` `t` LEFT JOIN tbl_myr_share_comment ON
tbl_myr_share_comment.shareId=t.shareId WHERE t.userId=1 ORDER BY
t.shareId DESC LIMIT 10;
明明数据库有4条数据,但是查询的结果出来是一条数据。
SELECT t.*,count(tbl_myr_share_comment.shareId) as count FROM
`tbl_myr_share` `t` LEFT JOIN tbl_myr_share_comment ON
tbl_myr_share_comment.shareId=t.shareId WHERE t.userId=1 GROUP BY
t.shareId ORDER BY t.shareId DESC LIMIT 10
但是我后面加一个group by则得到了正确的数据。
请问为什么有count的情况下加group 才能得到正确的数据呢?
这要针对数据表的具体情况进行分析,给你一些
Group By
的资料,其实思想很简单,自己好好琢磨一下,一定能思明白的!SQL GROUP BY 实例
我们拥有下面这个 "Orders" 表:
现在,我们希望查找每个客户的总金额(总订单)。
我们想要使用 GROUP BY 语句对客户进行组合。
我们使用下列 SQL 语句:
结果集类似这样:
很棒吧,对不对?
让我们看一下如果省略 GROUP BY 会出现什么情况:
结果集类似这样:
上面的结果集不是我们需要的。
那么为什么不能使用上面这条 SELECT 语句呢?解释如下:上面的
SELECT
语句指定了两列(Customer
和SUM(OrderPrice)
)。SUM(OrderPrice)
返回一个单独的值(OrderPrice
列的总计),而Customer
返回 6 个值(每个值对应Orders
表中的每一行)。因此,我们得不到正确的结果。不过,您已经看到了,GROUP BY
语句解决了这个问题。