src*_*ulo 61 mysql unique-constraint multiple-records
所以我知道在MySQL中可以在一个查询中插入多行,如下所示:
INSERT INTO table (col1,col2) VALUES (1,2),(3,4),(5,6)
Run Code Online (Sandbox Code Playgroud)
我想以类似的方式删除多行.我知道可以根据每行完全相同的条件删除多行,即
DELETE FROM table WHERE col1='4' and col2='5'
Run Code Online (Sandbox Code Playgroud)
要么
DELETE FROM table WHERE col1 IN (1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想在一个查询中删除多行,每行都有一组独有的条件,该怎么办?这样的东西就是我要找的东西:
DELETE FROM table WHERE (col1,col2) IN (1,2),(3,4),(5,6)
Run Code Online (Sandbox Code Playgroud)
有谁知道这样做的方法?还是不可能?
fth*_*lla 99
你非常接近,你可以使用这个:
DELETE FROM table WHERE (col1,col2) IN ((1,2),(3,4),(5,6))
Run Code Online (Sandbox Code Playgroud)
请看这个小提琴.
Ric*_*ing 11
对答案的略微延伸,因此,希望对提问者和其他任何人都有用.
您还SELECT可以删除要删除的值.但请注意错误1093 - 您无法在FROM子句中指定要更新的目标表.
DELETE FROM
orders_products_history
WHERE
(branchID, action) IN (
SELECT
branchID,
action
FROM
(
SELECT
branchID,
action
FROM
orders_products_history
GROUP BY
branchID,
action
HAVING
COUNT(*) > 10000
) a
);
Run Code Online (Sandbox Code Playgroud)
我想删除所有历史记录,其中单个操作/分支的历史记录数超过10,000.感谢这个问题和选择的答案,我可以.
希望这是有用的.
理查德.
| 归档时间: |
|
| 查看次数: |
107753 次 |
| 最近记录: |