mysql - 选择子表中具有特定 id 的行的总和并将其与父表进行比较
问题描述
您好,我有一个带有两个表的 SQL 数据库。
common_fee_collection //父表
common_fee_collection_headwise //子表
现在这两个表的结构是这样的
CREATE TABLE `common_fee_collection` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `admno` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `amount` double(13,2) NOT NULL );
此表包含行,其中的amount
列表示一生中的总金额
id = 这是一个具有唯一数据的自动增量 ID
admno = 唯一的准入号码
金额 = 表 common_fee_collection_headwise.amount 中所有行的总金额 common_fee_collection_headwise.amount
CREATE TABLE `common_fee_collection_headwise` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `moduleId` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `receiptId` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `amount` double(13,2) NOT NULL )
id AUTO_INCREMENT 整数数据
receiveId =这是来自 common_fee_collection.id 的外键
金额=特定时间特定交易的金额
现在的问题是我想获得 common_fee_collection.amount 不等于 SUM(common_fee_collection_headwise.amount) 的行。表示数量不匹配的行。
我已经尝试了这三个查询,但它给出了错误的输出或错误
1>SELECT * FROM common_fee_collection WHERE amount <> SUM(common_fee_collection_headwise.amount) AND id=common_fee_collection_headwise.receiptId;
此代码给出错误#1111 - Invalid use of group function
2>SELECT * FROM common_fee_collection as com WHERE amount<>SUM(common_fee_collection_headwise.amount) AND id=common_fee_collection_headwise.receiptId
此代码给出错误#1111 - Invalid use of group function
3>SELECT * FROM common_fee_collection AS a JOIN common_fee_collection_headwise as b ON a.id=b.receiptId HAVING SUM(b.amount) <> a.amount
此代码从 common_fee_collection 返回第一行,这不是我想要的正确返回......我不知道我的查询是对还是错,但我希望我清楚我的问题,你会尽力提供帮助。
解决方案
您可以先汇总它们,然后再进行比较 -
SELECT CFC.`id`, CFC.`amount`, CFCH.HEADWISE_AMOUNT
FROM `common_fee_collection` CFC
LEFT JOIN (SELECT `receiptId`, SUM(`amount`) HEADWISE_AMOUNT
FROM `common_fee_collection_headwise`
GROUP BY `receiptId`) CFCH ON CFC.`id` = CFCH.`receiptId`
WHERE CFC.`amount` <> CFCH.HEADWISE_AMOUNT
推荐阅读
- python - 在 cmd 中运行 scapy 时,scapy sniff() 函数失败
- game-development - 如何在 matter.js 中创建随机地面
- c# - 尝试将此代码从 C# 移植到 VB.NET(来自 IHttpExecuteInterceptor)
- excel - 根据每月数据计算每周数量
- c++ - 返回 auto&& 和 decltype(auto) 有什么区别?
- python - SSH 与 Python 脚本
- html - 使用 html 和 css 编辑单选按钮和标签部分的背景颜色
- xquery - 我不知道这个 xquery 代码中的语法错误
- python - 如何在消极的向后看之后使模式足够贪婪以匹配它后面的所有东西
- angular - Angular 和 OpenLayers,点击时产生特写