获取同一个表(MySQL)中一列所在集合中的所有行

获取同一个表(MySQL)中一列所在集合中的所有行,mysql,join,Mysql,Join,因此,我得到了一个MySQL表,其中包含以下列: PROPERTY_ID AGENT_ID STATUS SALE_DATE SALE_PRICE ZIP 我想获得在给定邮政编码内至少售出一处房产的所有代理的总销售额。也就是说,如果Bob Smith的代理ID链接到ZIP 90210中的至少一处房产,那么我希望Bob Smith的所有销售额都包含在总额中 我知道我可以通过以下方法分多个步骤完成: CREATE TEMPORARY TABLE `AGENTS` (`AGENT_ID` INT);

因此,我得到了一个MySQL表,其中包含以下列:

PROPERTY_ID
AGENT_ID
STATUS
SALE_DATE
SALE_PRICE
ZIP
我想获得在给定邮政编码内至少售出一处房产的所有代理的总销售额。也就是说,如果Bob Smith的代理ID链接到ZIP 90210中的至少一处房产,那么我希望Bob Smith的所有销售额都包含在总额中

我知道我可以通过以下方法分多个步骤完成:

CREATE TEMPORARY TABLE `AGENTS` (`AGENT_ID` INT);
INSERT INTO `AGENTS` SELECT DISTINCT `AGENT_ID` FROM `PROPERTIES` WHERE ZIP = 90210;
SELECT SUM(p.`SALE_PRICE`) FROM `PROPERTIES` p, `AGENTS` a WHERE p.`AGENT_ID` = a.`AGENT_ID`;

我想知道的是,我能在不将代理ID转储到临时表中加入的情况下完成这项工作吗?似乎有一种方法可以将PROPERTIES表本身连接起来,但我不确定如何连接。如果您有任何想法,我将不胜感激。

如果我理解,您实际上不需要
连接,可以通过where子句中的select来完成此操作。
子句中的
为您提供了在90210中销售过任何东西的所有代理,但没有将
SUM()的结果限制为90210中的那些属性记录

SELECT SUM(SALE_PRICE) 
FROM properties
WHERE AGENT_ID IN (SELECT AGENT_ID FROM properties WHERE ZIP = 90210);
如果需要每个代理的总和,请添加一个
分组依据

SELECT AGENT_ID, SUM(SALE_PRICE) 
FROM properties
WHERE AGENT_ID IN (SELECT AGENT_ID FROM properties WHERE ZIP = 90210)
GROUP BY AGENT_ID;
这将为在90210中销售商品的每个代理商提供一个单独的总数。

虽然你的问题没有这样说,但它表明这正是你想要的。

这让我朝着正确的方向前进,尽管我实际上只需要总额,而不是代理,这样我就可以取消分组。这正是我需要的!非常感谢。
SELECT
    AGENT_ID,
    SUM(SALE_PRICE)
FROM PROPERTIES
WHERE AGENT_ID IN (SELECT AGENT_ID FROM PROPERTIES WHERE ZIP = 90210)
GROUP BY AGENT_ID;