sql - 如何为返回多个值的子查询执行 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 的供应商的电子邮件地址。
解决方案
如果您尝试查找温度低于 3 的所有记录,则可以使用以下命令。
SELECT Email
FROM Supplier
WHERE Supplier_ID IN (SELECT Temperature FROM Batchofmeat WHERE Supplier.Supplier_ID = Batchofmeat.Supplier_ID AND Temperature < 3 );
请注意,这可能不适用于大量记录。