【问题标题】:1242 - Subquery returns more than 1 row, What's wrong?1242 - 子查询返回多于 1 行,怎么了?
【发布时间】:2020-05-09 06:54:43
【问题描述】:
我试过这个查询:
SELECT `wh_pengeluaran`.`Nomor Dokumen`, `wh_pengeluaran`.`Created
Date`, `inventory transactions`.`Transaction Item`,(SELECT Quantity
FROM `inventory transactions` WHERE `inventory transactions`.`Proforma
Invoice` > 0) as qtykeluar
FROM `inventory transactions` JOIN `wh_pengeluaran`
WHERE `inventory transactions`.`Transaction Item` = 1
但是 MySQL 说:文档
1242 - 子查询返回多于 1 行
请大家帮忙。语法有什么问题?我不知道
谢谢! :)
【问题讨论】:
-
hi Metta,欢迎来到stackoverflow,正如错误所说,子查询(你的SELECT Quantity FROM... as qtykeluar)返回多个结果,所以mysql不知道如何将多个项目放入单个列中。如果我们知道,您想通过查询实现什么?仅供参考,如果您不关心子查询的其余结果,可以使用LIMIT。
-
标签:
php
mysql
database
codeigniter
【解决方案1】:
问题是子查询返回多行,如果您将其与 select 语句一起使用,这是不可能的。 MySql 不知道从多个项目中将什么放入单个列中。
我不知道您究竟想要实现什么,但如果您不关心子查询的所有记录并想选择任何一条记录,您可能可以使用 LIMIT 1 在子查询中仅选择一条记录。
您的子查询应如下所示:
SELECT Quantity
FROM `inventory transactions` WHERE `inventory transactions`.`Proforma
Invoice` > 0 LIMIT 1
完整查询:
SELECT `wh_pengeluaran`.`Nomor Dokumen`, `wh_pengeluaran`.`Created
Date`, `inventory transactions`.`Transaction Item`,(SELECT Quantity
FROM `inventory transactions` WHERE `inventory transactions`.`Proforma
Invoice` > 0 LIMIT 1) as qtykeluar
FROM `inventory transactions` JOIN `wh_pengeluaran`
WHERE `inventory transactions`.`Transaction Item` = 1