mysql - 如何从同一供应商处选择产品,获取此错误子查询返回多于 1 行
问题描述
我是这个查询世界的新成员。我尝试从表 [mod_productos] 中选择来自同一供应商 [vProveedor] 的产品列 [vProducto] 但我收到错误 [子查询返回超过 1 行]
我正在尝试使用此代码:
SELECT vProducto
FROM mod_productos
WHERE vProducto IN (
SELECT vProducto
FROM mod_productos
WHERE vProveedor="Telefonica"
);
有关如何执行此操作的任何帮助?提前致谢...
解决方案
SELECT
vProducto
FROM mod_productos
WHERE
vProducto IN (
SELECT vProducto FROM mod_productos WHERE vProveedor="Telefonica"
);
上面的查询很好,您不应该在此处使用您的语法获得“子查询返回多行”异常。
当您遇到多行异常时,通常是使用 SELECT 子查询作为列的结果。
例如
SELECT
pkMyProdID
, ( SELECT field FROM OtherTable WHERE fkMyProdID = pkMyProdID ) AS SubQueryColumn
FROM myTable;
在此示例中,“SubQueryColumn”只能返回一行,否则最终会出现多行错误。
虽然我不建议这样做(您期望不止一行吗?),但您可以通过将上面的示例修改为:
SELECT
pkMyProdID
, ( SELECT TOP 1 field FROM OtherTable WHERE fkMyProdID = pkMyProdID ) AS SubQueryColumn
FROM myTable;
请注意我添加到子查询中的“TOP 1”。这样可以确保只返回一行——但是——知道你的数据。如果您不期望超过一排但您收到了,请查看原因。
推荐阅读
- javascript - 在 forEach 循环期间跳过第一次迭代
- css - 不要在 scrapy 中加载图像、css 或主题以及脚本
- asp.net-mvc - 在新项目上安装 aspent 样板包得到错误
- trace - 带有 Spring Boot 的 Jaeger
- microsoft-cognitive - Microsoft 自定义语音 - 人工标记的转录
- javascript - 价格滑块,添加实时价格更新(文本)
- javascript - 在渲染组件之前反应路由器闪烁
- java - Young gen 的默认收集器。Java 1.5、1.6、1.7 和 1.8 的版本?
- mysql - 使用删除和更新级联创建具有外键引用的表时遇到错误
- ruby-on-rails - Ruby 异常的语法