Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:Вземете връщан резултат от INSERT SELECT

Тъй като заявката ви има LIMIT 1 можете да съхраните "резултата" в session/user- дефинирана променлива . Все още две заявки, но повторно влизащи; всяка връзка е своя собствена сесия.

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

"първият" запис в tbl2 с x=0 е (myID=3,x=0) и скриптът отпечатва 4 .

Освен това и съхранените процедури и други, няма (доколкото ми е известно) нищо подобно на на SQLServer ИЗХОД или ВРЪЩАНЕ на postgresql клауза за 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. Laravel Eloquent сравнява датата от полето datetime

  2. Импортиране на групови CSV данни в UTF-8 в MySQL

  3. mysql SELECT с предпочитание за условие

  4. Получаване на ежедневни отчети за събития, които не се случват всеки ден

  5. Запазване на данни на арабски в MySQL база данни