如何从同一供应商选择产品,获取此错误子查询返回超过1行

smdnsysy  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(257)

我是新来的。我试图从表[mod\u productos]中从同一供应商[vproveredor]中选择一个products列[vproducto],但得到错误[subquery返回超过1行]
我正在尝试使用以下代码:

SELECT vProducto 
FROM mod_productos 
WHERE vProducto IN (
    SELECT vProducto 
    FROM mod_productos  
    WHERE vProveedor="Telefonica"
);

怎么做有什么帮助吗?提前谢谢。。。

f2uvfpb9

f2uvfpb91#

SELECT 
    vProducto 
FROM mod_productos 
WHERE 
    vProducto IN (
        SELECT vProducto FROM mod_productos WHERE vProveedor="Telefonica"
    );

上面的查询很好,您在这里的语法不应该出现“subquery returns more one row”异常。
当遇到多行异常时,通常是将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”。这样可以确保只返回一行——但是——要知道您的数据。如果你不期待不止一行,但你收到它,看看为什么。

相关问题