【发布时间】:2015-06-26 21:03:53
【问题描述】:
无论如何,我对 mysql 并不感到惊讶。直到昨天我还没有处理任何形式的加入,现在我遇到了问题。
我正在执行的SQL语句如下:
SELECT `services`.`name`, `services`.`type`,
`services`.`review_count_approved`, `reviews`.`escalate`,
`services`.`average_rating`
FROM `services`
INNER JOIN `reviews` on `services`.`serviceID` = `reviews`.`serviceID`
WHERE `services`.`serviceID` IN (50707, 50709);
通过执行此查询,它应该只带回 2 个结果,但实际上它会将 2 个结果带回 3 次。
好的,我从中获取信息的两个表是
-服务
-评论
现在如果我只是执行以下 sql 语句
SELECT * FROM `services` WHERE `serviceID` IN (50707,50709);
它带回了这些记录
但是当我在这篇文章中进行顶部查询时,它会返回这 2 个结果 3 次。
我做错了什么?
【问题讨论】:
-
发布你的表格结构
-
为什么只能得到 2 个结果?每次对这两项服务进行审核时,您都应该得到一个结果。
-
@barmar 非常真实,我没有想到那个,这解释了为什么当它旁边没有评论时什么都没有回来。我怎么能改变它,这样无论它是否有评论,它都能让我回到 1 项服务?
-
使用
LEFT JOIN而不是INNER JOIN。 -
如果评论有不同的
escalate或average_rating,你真的只想要其中一个吗?哪一个?