mysql - 在1个语句中组合2个查询(插入和选择)?

时间:2015-12-27 11:29:01

标签: mysql sql

我有一个带有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查询次数。

感谢

1 个答案:

答案 0 :(得分:1)

您可以执行INSERT ON DUPLICATE KEY UPDATE(IODKU),然后执行select,即2个语句。或者您可以将它们包装在存储过程中并制作一个。也许不是你想听到的答案。

对于IODKU,您自然需要一个唯一的键来促进触发UPDATE部分的冲突。该唯一键可以是以下之一:

  • 主键(单列或复合)
  • 包含unique关键字
  • 的非主键(单列或复合)

请注意,可能会在多个唯一键上发生upsert冲突。所需要的只是触发UPDATE部分的唯一键冲突之一。

可以通过一个存储过程实现单个调用,例如:

call myStoredProcName(param1,param2);

进一步的手册页参考: