sql-在一个查询中插入多个表
假设我有两个表,sql-在一个查询中插入多个表,sql,mysql,multiple-tables,insert-into,Sql,Mysql,Multiple Tables,Insert Into,假设我有两个表,names和phones 我想在一个查询中,将一些输入数据插入到表中,这是如何实现的 如果可以的话,请解释一下语法。MySQL不支持一次插入多个表。Oracle是我所知道的唯一一个这样做的,奇怪的是 INSERT INTO NAMES VALUES(...) INSERT INTO PHONES VALUES(...) 你不能。但是,您可以使用一个事务,并将它们都包含在一个事务中 START TRANSACTION; INSERT INTO table1 VALUES ('1'
names
和phones
我想在一个查询中,将一些输入数据插入到表中,这是如何实现的
如果可以的话,请解释一下语法。MySQL不支持一次插入多个表。Oracle是我所知道的唯一一个这样做的,奇怪的是
INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
你不能。但是,您可以使用一个事务,并将它们都包含在一个事务中
START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;
我也有同样的问题。我用for循环解决它 例如: 如果我想使用循环在2个相同的表中写入
for x = 0 to 1
if x = 0 then TableToWrite = "Table1"
if x = 1 then TableToWrite = "Table2"
Sql = "INSERT INTO " & TableToWrite & " VALUES ('1','2','3')"
NEXT
或者
ArrTable = ("Table1", "Table2")
for xArrTable = 0 to Ubound(ArrTable)
Sql = "INSERT INTO " & ArrTable(xArrTable) & " VALUES ('1','2','3')"
NEXT
如果您有一个小查询,我不知道这是否是最好的解决方案,但是如果您的查询非常大,并且它位于带有If/else/case条件的动态脚本中,这是一个很好的解决方案。必须使用
mysqli\u multi\u query()函数执行多个SQL语句
示例(MySQLi面向对象):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO names (firstname, lastname)
VALUES ('inpute value here', 'inpute value here');";
$sql .= "INSERT INTO phones (landphone, mobile)
VALUES ('inpute value here', 'inpute value here');";
if ($conn->multi_query($sql) === TRUE) {
echo "New records created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
我猜所有数据库的答案都是“你不能”,但以防万一,你使用的是什么数据库?mysql,最新版本(我看到一些解决方案使用“输出”来完成这项工作,但我更愿意避免四处走动……)Joshua欢呼,这对我帮助很大。虽然在MySql中,我认为这是开始而不是开始。事务的目的是什么?我推测,如果其中一个查询出错,那么所有查询都将回滚。是这样吗?还是在性能上也有一些提高?@Clox:这部分是交易的目的。另一个目的是,数据库将在事务之前、期间和之后处于已知的稳定状态。这意味着并发查询将永远看不到部分提交的数据。当您必须为每个表插入相同的值和/或相同数量的值时,这将非常有用。Joshua Smith的答案比这个更好。