mysql - 堆叠式 SQL 查询错误和并发症

标签 mysql sql sql-server phpmyadmin

我刚刚了解到您可以堆叠 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/

相关文章:

sql-server - 如何向现有的 Visual Studio 数据库项目添加新架构?

sql-server - 反复将数据从 SQL Server 移动到 Oracle

php - 具有多个选择选项的 MySQL 查询

Java hibernate : Update most recent entry in MySql database

sql - MySQL慢查询

php - 如何更改时间配置?

java - 即使存在约束违规异常,主键也会自动递增 Mysql(5.6.34)

python - 如何在 Django 中使用复选框在 MySQL 中输入 1 或 0?

mysql - 从一个表中返回与其他表不匹配的单行

sql - 如何让SQL Server忽略检查?