Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql删除不同列的多行_Mysql_Sql - Fatal编程技术网

Mysql sql删除不同列的多行

Mysql sql删除不同列的多行,mysql,sql,Mysql,Sql,我正在研究一种删除单个SQL数据库中多行的方法,目标是两列。ColumnA将始终是相同的值,ColumnB将是不同的值 我正在尝试找出类似以下内容的正确语法: DELETE FROM tableName WHERE ( ColumnA = 123 AND ColumnB = 1, ColumnA = 123 AND ColumnB = 2, ColumnA = 123 AND ColumnB = 3, ColumnA = 123 AND ColumnB = 4,

我正在研究一种删除单个SQL数据库中多行的方法,目标是两列。ColumnA将始终是相同的值,ColumnB将是不同的值

我正在尝试找出类似以下内容的正确语法:

DELETE FROM tableName WHERE (
    ColumnA = 123 AND ColumnB = 1,
    ColumnA = 123 AND ColumnB = 2,
    ColumnA = 123 AND ColumnB = 3,
    ColumnA = 123 AND ColumnB = 4,
    ColumnA = 123 AND ColumnB = 8
);

上述逻辑的正确SQL语法是什么?

替换为

where (ColumnA = 123 and ColumnB = 1) or
      (ColumnA = 123 and ColumnB = 2) or
        . . .
      (ColumnA = 123 and ColumnB = 8);
这也可以简化为:

where ColumnA = 123 and
      ColumnB in (1, 2, 3, 4, 8);

替换

where (ColumnA = 123 and ColumnB = 1) or
      (ColumnA = 123 and ColumnB = 2) or
        . . .
      (ColumnA = 123 and ColumnB = 8);
这也可以简化为:

where ColumnA = 123 and
      ColumnB in (1, 2, 3, 4, 8);
最简单的解决方案(如GMB所建议的)是用
替换逗号。但是,MySQL也支持元组,因此您可以使用:

WHERE (ColumnA, ColumnB) IN ( (123, 1), (123, 2), (123, 3), (123, 4), (123, 8) )
或者,如果
列a
的值确实相同,则:

WHERE ColumnA = 123 AND
      ColumnB IN (1, 2, 3, 4, 8)
最简单的解决方案(如GMB所建议的)是用
替换逗号。但是,MySQL也支持元组,因此您可以使用:

WHERE (ColumnA, ColumnB) IN ( (123, 1), (123, 2), (123, 3), (123, 4), (123, 8) )
或者,如果
列a
的值确实相同,则:

WHERE ColumnA = 123 AND
      ColumnB IN (1, 2, 3, 4, 8)
这可以做到:

DELETE FROM tableName 
WHERE ColumnA = 123 AND ColumnB IN (1, 2, 3, 4, 8)
这可以做到:

DELETE FROM tableName 
WHERE ColumnA = 123 AND ColumnB IN (1, 2, 3, 4, 8)

只需将逗号替换为
s。哦,是的,你甚至不需要添加括号,因为
s在
s之前已经被解释过了:试试这个,从tableName中删除(ColumnA=123和ColumnB in(1,2,3,4,8);只需将逗号替换为
s。哦,是的,您甚至可能不需要添加括号,因为
s在
s之前已经被解释过了:试试这个,从tableName中删除(ColumnA=123和ColumnB in(1,2,3,4,8);