mysql左右连接的选择_MySQL从多个表中选择按左连接表的数量排序

我一直在尝试从多个表中选择数据,而我从另一个表中加入了一个左连接来排序ID的数量。一切都很好,除非计数增加了600个,而不是每行增加一个。

正如我在类似的问题中看到的那样,我在count语句内部加入了独特的内容,但是冻结数据库的唯一结果。

表:

CREATE TABLE IF NOT EXISTS `places` (

`PlaceId` int(10) NOT NULL AUTO_INCREMENT,

`Name` varchar(45) COLLATE utf8_unicode_ci NOT NULL,

`AreaId` int(10) NOT NULL DEFAULT '1',

PRIMARY KEY (`PlaceId`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0;

CREATE TABLE IF NOT EXISTS `places_descriptions` (

`DescId` int(45) NOT NULL AUTO_INCREMENT,

`PlaceId` int(10) NOT NULL,

`Description` varchar(1024) COLLATE utf8_unicode_ci DEFAULT NULL,

PRIMARY KEY (`DescId`),

KEY `PlaceId` (`PlaceId`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0;

CREATE TABLE IF NOT EXISTS `places_hits` (

`HitId` int(45) NOT NULL AUTO_INCREMENT,

`PlaceId` int(45) NOT NULL,

PRIMARY KEY (`HitId`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=0;查询:

SELECT

p.PlaceId,

p.Name,

pd.Description,

COUNT(ph.HitId) AS numHits

FROM

places_descriptions AS pd,

places AS p

LEFT JOIN places_hits AS ph

ON (p.PlaceId = ph.PlaceId)

WHERE

(p.PlaceId = pd.PlaceId) AND

(p.AreaId = 1)

GROUP BY

p.PlaceId,

p.Name,

pd.Description

ORDER BY

numHits DESC,

p.PlaceId

LIMIT 0, 10有任何想法吗?谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值