0

就在此时,我在一个表中有需要从中删除数据的订单。在我需要从中删除行的表中,有 2 个连接。其中一个连接是指带有客户名称/子名称的表。我需要从订单表中具有特定子名称的这些客户中删除一定数量的产品。要获得我需要删除的产品列表,我是否需要查看第三张表的价格。

下面是我创建的以下查询,但返回了一个错误,对此我并不感到惊讶。

    DELETE FROM `table1`
WHERE `entry` = (SELECT `entry` FROM `table2` WHERE `subname` = 'Buyer')
    AND `item` = (SELECT `entry` FROM `table3` WHERE `Price` != '226' OR '232');

运行此查询使我遇到以下错误..

错误代码:1242 子查询返回多于 1 行

执行时间:0 秒传输时间:0 秒总时间:0.044 秒

任何人都可以帮助我进行正确的查询设置吗?

4

2 回答 2

1

您需要使用 IN 子句而不是相等

如果您仅根据客户名称从表中删除客户记录,您的查询将类似于

DELETE FROM `table1` 
WHERE `entry` IN (SELECT `entry` FROM `table2` WHERE `subname` = 'Buyer') 
于 2012-10-08T17:37:33.827 回答
0

您的查询应该是

DELETE FROM `table1`
WHERE `entry` IN (SELECT `entry` FROM `table2` WHERE `subname` = 'Buyer')
    AND `item` IN (SELECT `entry` FROM `table3` WHERE `Price` != '226' OR '232');
于 2012-10-08T17:34:54.003 回答