【发布时间】:2023-03-22 00:55:01
【问题描述】:
我有一个相当复杂的 SQL 查询,如图所示 in this fiddle
SELECT payer_payment.payer_id,
Sum(payer_payment.amount) AS total_paid,
Sum(payer_payment.pays * payments_share.single_share) AS fair_share
FROM payers
INNER JOIN (payer_payment
INNER JOIN (SELECT payment_id,
Sum(amount) / Sum(pays) AS single_share
FROM payer_payment
GROUP BY payment_id) AS payments_share
ON payer_payment.payment_id =
payments_share.payment_id)
ON payers.id = payer_payment.payer_id
WHERE payers.user_id = 1
GROUP BY payer_payment.payer_id;
在小提琴中,它在 MySQL 上运行良好,但是当我在 SQLite 数据库上运行它时,它要么抛出错误,引用:
(1 没有这样的列:payer_payment.payer_id)
当该列明确存在时。
或者只是返回 0 个结果,具体取决于 SQLite 实现(WebSQL 与 SQLite.js)
这是什么原因?是否有可能使我的查询更加与数据库无关?
【问题讨论】:
-
嗯,我删除了多余的括号,但似乎没有帮助
-
事实上它会为 MySQL 破坏它
-
看看你的 Fiddle for SQLite(最后一行):sqlfiddle.com/#!5/ccd48/7。看看payers->id。我认为 SQLite 的 SQLFiddle 存在一些问题,并且自动增量不起作用(或者,更有可能 - AUTOINCREMENT 在 SQLite 中称为 IDENTITY)
-
看看我删除了 auto_identity 的这个小提琴:sqlfiddle.com/#!5/d9775/2 它在这里工作