sql-insert在一个查询中插入多个表

eqqqjvef  于 2021-07-24  发布在  Java
关注(0)|答案(4)|浏览(325)

假设我有两张table, names 以及 phones 我想在一个查询中,将一些输入的数据插入到表中-怎么做?
如果可以的话,请解释一下语法。

8ljdwjyq

8ljdwjyq1#

mysql不支持在单个insert语句中插入多表。我所知道的只有甲骨文一个,奇怪的是。。。

INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
drkbr07n

drkbr07n2#

你不能。但是,您可以使用一个事务并将它们都包含在一个事务中。

START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;

http://dev.mysql.com/doc/refman/5.1/en/commit.html

wkyowqbh

wkyowqbh3#

我也有同样的问题。我用for循环求解。
例子:
如果我想写两个相同的表,使用循环

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条件,这是一个很好的解决方案。

uurity8g

uurity8g4#

必须使用 mysqli_multi_query() 功能。
示例(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();
?>

相关问题