我刚刚了解到您可以堆叠 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
这是被调用的数据库/表的基本设置: [筹款事件] - (ID, ref_ID, user_ID, org_fund_ID) 和 [用户] - (名字,姓氏)
基本上,我想从数据库中提取“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 行”。
不确定我如何才能为您提供更多信息,以便您可以想象我在说什么,但我会提供我能提供的任何数据。
提前致谢。
最佳答案
选择所有列:
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;
这应该是,你需要的。参见 this Wikipedia page .
关于mysql - 堆叠式 SQL 查询错误和并发症,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194870/