Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:Uzyskaj wynik zwrotu z INSERT SELECT

Ponieważ Twoje zapytanie ma LIMIT 1 możesz przechowywać "wynik" w sesji/user- zdefiniowana zmienna . Wciąż dwa zapytania, ale powracające; każde połączenie jest osobną sesją.

<?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)');
}

"pierwszy" rekord w tbl2 mający x=0 to (myID=3,x=0), a skrypt wypisuje 4 .

Poza tym i procedurami składowanymi itp. (według mojej wiedzy) nie ma nic takiego jak SQLServer WYJŚCIE lub postgresql POWRÓT klauzula dla MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć się z bazą danych localhost z serwera node.js

  2. Uwierzytelnianie SVN przy użyciu MySQL

  3. Logika rekurencyjna w PHP + MySQL

  4. Jak odjąć uprawnienia w MySQL

  5. transakcja mysql - mieszanie wstawiania i zaznaczania, aby uzyskać last_insert_id?