1

我刚刚了解到您可以堆叠 SQL 查询,而不是运行 4 个不同的查询并组合数据。所以我阅读了教程和东西,但仍然无法弄清楚这一点。

SELECT ID,
       (SELECT firstname
        FROM   user
        WHERE  ID = fundraiser.user_ID) AS firstname,
       (SELECT lastname
        FROM   user
        WHERE  ID = fundraiser.user_ID) AS lastname,
       (SELECT org_fund_id
        FROM   fundraiser
        WHERE  ID = fundraiser.ID)      AS org_fund_ID,
       (SELECT ref_ID
        FROM   fundraiser
        WHERE  ID = fundraiser.ID)      AS ref_ID
FROM   fundraiser
WHERE  1
ORDER  BY org_fund_ID ASC

这是被调用的数据库/表的基本设置:[fundraiser] - (ID, ref_ID, user_ID, org_fund_ID) 和 [user] - (firstname, lastname)

基本上,我想从数据库中提取“fundraiser”中的所有字段,但获取相应的“user.firstname”和“user.lastname”,其中“fundraiser.user_ID”=“user.ID”。

所以它会像这样连续出现:fundraiser.ID、fundraiser.user_ID、fundraiser.ref_ID、user.firstname、user.lastname

我已经尝试了 30 种不同的方式来编写这个查询,但都失败了。我得到的错误是“#1242 - 子查询返回超过 1 行”。

不知道我怎样才能给你更多的信息,这样你就可以想象我在说什么,但我会提供我能提供的任何数据。

提前致谢。

4

1 回答 1

2

选择所有列:

SELECT *
FROM   fundraiser f
       INNER JOIN user u
               ON u.ID = f.user_ID
ORDER  BY f.ord_fund_id ASC;

选择所需的列:

SELECT 
    u.firstname,
    u.lastname,
    f.org_fund_id,
    f.ref_ID
FROM fundraiser f 
INNER JOIN user u ON u.ID = f.user_ID
ORDER BY f.ord_fund_id ASC;

这应该是你需要的。请参阅此维基百科页面

于 2012-08-30T10:34:41.053 回答