我正在尝试执行一个SQL查询,该查询也会从另一个表中吐出许多符合条件的行。
这是当前查询,插入sprintf:
选择a。* FROM
websites
AS a 在哪里website_id
=%d
然后,我有一个查询来检索给定网站的唯一访问次数(来自访问表):
SELECT * FROM
website_visits
WHEREwebsite_id
=%d GROUP BYvisitor_id
现在,有没有办法在第一个查询中插入该查询,以便我可以检索唯一访问次数,作为第一个查询结果的一部分?它必须是这样的:
SELECT a。*,(SELECT * FROM
website_visits
AS b在哪里 b。website_id
= a。website_id
GROUP BYvisitor_id
)AS unique_visits FROMwebsites
作为一个地方website_id
= %d
但是......至于执行结束,我很难过。您可以提供的任何帮助表示赞赏!
答案 0 :(得分:1)
要检索行计数,请在查询中添加SQL_CALC_FOUND_ROWS,例如:
SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name;
在此查询之后,您可以:
SELECT FOUND_ROWS();
检索行数。
(这会以便宜的方式检索计数;如果您需要将计数作为行集的一部分,则必须使用子查询,就像在您的问题中一样。)
答案 1 :(得分:1)
这为您提供了所有网站记录,并为每个网站记录了该网站的唯一visitor_id
个。{/ p>
SELECT a.*, (
SELECT COUNT(DISTINCT b.visitor_id)
FROM website_visits AS b
WHERE b.website_id = a.website_id) AS unique_visits
FROM websites AS a
WHERE website_id = %d