我想在我的MYSQL数据库的Back Order表中添加一个新的Back Order。我得到的问题是,当我尝试选择Supplier_ID将其添加到Back Order Table时,该程序给我一个错误,指出“Subquery返回多个值”。什么导致“子查询返回多于一行”错误?
供应商表(如果您不清楚如何正确地构建它)
| Supplier_ID | SupName |
| 1 | EWS |
| 6 |富兰克林面包店|
返回顺序表
| BackOr_ID | Supplier_ID | BackOr_Org_Date | Sup_Name |
我目前使用MySQL查询:
CREATE DEFINER=`root`@`%` PROCEDURE `sp_BackOrder`(
in supname varchar(50),
in dat date
)
BEGIN
insert into Back_Order
(
Supplier_ID,
BackOr_Org_Date,
Sup_Name
)
values
(
(select Supplier_ID from Supplier Where SupName = supname),
dat,
supname
);
END
使用该查询的C#代码是:
MySqlCommand cmd = new MySqlCommand("sp_BackOrder", new MySqlConnection(*Connection String*));
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new MySqlParameter("supname", Supp_Name)); //Supp_Name is the Supplier Name (a string variable)
cmd.Parameters.Add(new MySqlParameter("dat", DateTime.Now.ToShortDateString())); //dat is the date the Order is placed
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
我得到的唯一错误是子查询(我认为是Select Query)返回的值超过1。我试过四处寻找,甚至看着Stackoverflow,但找不到任何解决方案的问题。任何帮助,将不胜感激。
你的值块没有意义 – Drew
“SupName”字段是唯一的吗?它应该是? –
子查询'从供应商中选择Supplier_ID其中,SupName = supname'返回多个值,因为您的数据库中至少有2个供应商具有相同的名称。当使用这些子查询时,按唯一列进行搜索。 –