我很头疼加入我的桌子。目前我用这种方式
<?php
$result = $db->query("SELECT COUNT(*) AS rows, ad_userid
FROM ads
GROUP BY ad_userid
ORDER BY rows DESC
LIMIT 5
");
while ($top = $db->fetch($result)) {
$selectuser = $db->query("SELECT *
FROM users
WHERE user_id='".intval($top['ad_userid'])."'
");
$user = $db->fetch($selectuser);
?>
<li><a href="<?php echo $url;?>/user/<?php echo $user['user_id']; ?>/"><?php echo $user['user_name'].' '.$top['rows']; ?></a></li>
<?php } ?>
结果很好但是让我知道加入这个表的简单方法。
答案 0 :(得分:1)
尝试使用子查询:
SELECT *
FROM (
SELECT COUNT(*) AS rows, ad_userid
FROM ads
GROUP BY ad_userid
ORDER BY rows DESC
LIMIT 5
) AS t1 LEFT JOIN users AS t2 ON t2.user_id = t1.ad_userid
更新(@Marc B) 来自MySQL doc。
有些错误仅适用 到子查询。本节介绍 他们。 ......不支持的子查询 语法:
ERROR 1235(ER_NOT_SUPPORTED_YET) SQLSTATE = 42000 Message =“这个 MySQL版本尚不支持 '限制&amp; IN / ALL / ANY / SOME子查询'“ 这意味着该陈述 以下表格尚不起作用:
SELECT * FROM t1 WHERE s1 IN(SELECT s2 FROM t2 ORDER by s1 LIMIT 1)
不支持在子查询中使用正确的Mark,LIMIT,但仅在IN / ALL / ANY / SOME中使用时...您可以在FROM子句中自由使用它。
我几小时前就写过这种查询,看起来效果很好。