首页 > 解决方案 > 如何为返回多个值的子查询执行 SELECT?

问题描述

我在数据库中使用 SQL 时遇到问题。

这是我的代码:

CREATE TABLE Supplier 
(
    Supplier_ID int NOT NULL PRIMARY KEY,
    Name varchar(50) NOT NULL,
    Phone int,
    Email varchar(50) 
);

CREATE TABLE Batchofmeat 
(
    Number_of_batch varchar(50) NOT NULL PRIMARY KEY,
    Supplier_ID int NOT NULL REFERENCES Supplier(Supplier_ID),
    Weight FLOAT NOT NULL,
    Temperature FLOAT NOT NULL,
    Price FLOAT NOT NULL
); 

SELECT Email 
FROM Supplier 
WHERE (SELECT Temperature FROM Batchofmeat 
       WHERE Supplier.Supplier_ID = Batchofmeat.Supplier_ID) < 3;

问题是,当我运行时SELECT,我收到以下错误:

子查询返回了多个值,在=、!=、<、<=、>、>=之后或作为表达式使用时不正确

即使我得到错误它应该显示解决方案,可能是什么问题?

我想要的选择是选择那些Batchofmeat温度低于 3°C 的供应商的电子邮件地址。

标签: sql

解决方案


如果您尝试查找温度低于 3 的所有记录,则可以使用以下命令。

SELECT Email 
FROM Supplier 
WHERE Supplier_ID IN (SELECT Temperature FROM Batchofmeat WHERE Supplier.Supplier_ID = Batchofmeat.Supplier_ID AND Temperature < 3 );

请注意,这可能不适用于大量记录。


推荐阅读