【问题标题】:How to find out why a SQL query does not produce rows as expected? [duplicate]如何找出 SQL 查询未按预期生成行的原因? [复制]
【发布时间】:2017-02-27 14:21:36
【问题描述】:

我对编程很陌生。在我的数据库类中,我必须“仅返回余额大于 50 的发票”。 当我运行它时,什么都没有出现。我做错了什么?

USE ap;
SELECT invoice_number, payment_total + credit_total AS 'payment_credit_total' , invoice_total - 'payment_credit_total' AS 'balance_due'
FROM invoices
WHERE 'balance_due' > 50
ORDER BY 'balance_due' DESC

【问题讨论】:

  • 幸运的是,读者已经发现了这个查询的问题。但是,通常我们会要求提问者准备尽可能小的测试数据集来突出问题。就目前而言,如果有人没有发现查询问题,答案可能是有问题的表是空的。考虑在您的问题中添加一个 SQL Fiddle - 这也可以包含一个简单的数据集。

标签: mysql


【解决方案1】:

balance_due 是您的表达式的别名,它只是您的结果集上的一个标签。但是,您不得在查询中使用它。

SELECT invoice_number, payment_total + credit_total AS 'payment_credit_total' , invoice_total - payment_total + credit_total AS 'balance_due'
FROM invoices
WHERE invoice_total - payment_total + credit_total > 50
ORDER BY invoice_total - payment_total + credit_total DESC

【讨论】:

  • 不完全。您不能在 WHERE 子句中使用它,但您可以在 ORDER BY 子句中使用它。
  • 没错,在 order 子句中你甚至可以设置数字索引
猜你喜欢
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多