我必须根据某些条件delete
行,然后我使用Select
查询选择剩余行,在SQL中是否可能?。
这两个操作应该在一个查询中完成。
请告诉我,对于这种类型的上下文,最原始和最好的方法是什么?
注意:你
can't do it all in one query
,但你可以做到这一切在一个TRANSACTION
如果你使用事务性存储引擎(如InnoDB)。这可能是你想要的,但很难通过你在问题中提供的信息来判断。
Working on with TRANSACTION:
START TRANSACTION;
INSERT STMT;
DELETE STMT;
UPDATE STMT;
COMMIT;
在IN
操作符和WHERE
操作符的帮助下,可以根据下面的子查询进行删除和选择。
MySQL的IN条件是用来帮助减少在SELECT, INSERT, UPDATE或DELETE语句中使用多个OR条件的需要。
注意:
- MySQL IN条件将返回表达式为value1, value2…,或value_n.
- MySQL IN条件也称为MySQL IN操作符。
DELETE from rooms WHERE initiating_user_id IN (SELECT user_id FROM users WHERE user_connected = 0)and target_user_id IN (SELECT user_id FROM users WHERE user_connected = 0)
处理过程:
您也可以为Doing this创建过程。这将减少您在代码中使用的查询数量。
CREATE PROCEDURE select_update_delete(a)
BEGIN
UPDATE table_one SET table_one.avalue=1 WHERE table_one.another=a;
DELETE FROM table_two WHERE table_two.avalue=a;
SELECT *
FROM table_one
WHERE table_one.another=a;
END;
希望我的解释能让你明白你的疑惑。
谢谢,Happy Coding:)
这两个操作应该在一个查询中完成。
不应该。
请告诉我,对于这种类型的上下文,最原始和最好的方法是什么?
只运行两个单独的查询。无论你不这样做的理由是什么,都是错误的。