我必须基于某些条件delete
行,然后我使用Select
查询选择剩余行,是否可以在SQL中使用?。
这两个操作都应该单个查询。
请问我,这种情境的原始和最佳方法是什么。
答案 0 :(得分:1)
注意:您
can't do it all in one query
,但如果您使用的是事务存储引擎(如InnoDB),则可以在一个TRANSACTION
中完成所有操作。这可能是您想要的,但仅使用您在问题中提供的信息很难说清楚。
START TRANSACTION;
INSERT STMT;
DELETE STMT;
UPDATE STMT;
COMMIT;
如果有IN
运算符和WHERE
,您可以根据子查询基于以下查询进行删除和选择。
IN条件
MySQL IN条件用于帮助减少在SELECT,INSERT,UPDATE或DELETE语句中使用多个OR条件的需要。
注意:强>
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)
您也可以为“执行此操作”创建该过程。这将减少您在代码中使用的查询数量。
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;
希望我的解释能够清楚地理解你的疑惑。
谢谢&快乐编码:)
答案 1 :(得分:0)
这两个操作都应该单个查询。
不应该。
请问我,这种情境的原始和最佳方法是什么。
只需运行两个单独的查询。不管你不这样做的原因是错误的。