我有一个带有i(primary),s和g列的mysql表。我有2个问题:
INSERT INTO usertable (i, s, g) VALUES('1', '2', '5') ON DUPLICATE KEY SET s=(s*g+'2')/(g+'5'), g=g+'5';
和
SELECT s FROM usertable WHERE i='1' LIMIT 1
是否可以在1个查询中同时拥有这两个查询?基本上想减少DB查询次数。
感谢
答案 0 :(得分:1)
您可以执行INSERT ON DUPLICATE KEY UPDATE(IODKU),然后执行select,即2个语句。或者您可以将它们包装在存储过程中并制作一个。也许不是你想听到的答案。
对于IODKU,您自然需要一个唯一的键来促进触发UPDATE部分的冲突。该唯一键可以是以下之一:
unique
关键字请注意,可能会在多个唯一键上发生upsert冲突。所需要的只是触发UPDATE部分的唯一键冲突之一。
可以通过一个存储过程实现单个调用,例如:
call myStoredProcName(param1,param2);
进一步的手册页参考: