sql >> Databáze >  >> RDS >> Mysql

MySQL:Získejte návratový výsledek z INSERT SELECT

Protože váš dotaz má LIMIT 1 „výsledek“ můžete uložit do session/user- definovaná proměnná . Stále dva dotazy, ale vracející se; každé připojení je vlastní relací.

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
setup($pdo);

$query = "
    INSERT INTO tbl1 (myID, myVal1, myVal2)
    SELECT @foo:=myID+1, 'val1', 'val2' FROM tbl2 WHERE x=0 LIMIT 1
";
$pdo->exec($query);
foreach( $pdo->query('SELECT @foo as foo') as $row ) {
    echo $row['foo'];
}


function setup($pdo) {
    $pdo->exec('CREATE TEMPORARY TABLE tbl1 (myID int, myVal1 varchar(16), myVal2 varchar(16))');
    $pdo->exec('CREATE TEMPORARY TABLE tbl2 (myID int, x int)');
    $pdo->exec('INSERT INTO tbl2 (myID, x) VALUES (1,1),(2,1),(3,0),(4,0),(5,1)');
}

"první" záznam v tbl2 s x=0 je (myID=3,x=0) a skript vypíše 4 .

Kromě toho a uložených procedur a dalších neexistuje (podle mých znalostí) nic jako SQLServer VÝSTUP nebo postgresql VRATNOST klauzule pro MySQL.



  1. Jak vypočítat kumulativní součet v MySQL

  2. MySQL:Vložte, pokud tato IP nemá žádné záznamy

  3. Žádné mapování dialektu pro typ JDBC:2003

  4. Zjistěte, jak dlouho trvá vytvoření připojení pomocí PHP mysqli_real_connect()