sql >> データベース >  >> RDS >> Mysql

MySQL:INSERTSELECTから戻り結果を取得します

    クエリにはLIMIT 1があるため 「結果」を session/user-に保存できます。定義された変数 。まだ2つのクエリですが、再入可能です。各接続は独自のセッションです。

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

    x =0のtbl2の「最初の」レコードは(myID =3、x =0)であり、スクリプトは4を出力します。 。

    それとストアドプロシージャなどを除いて、SQLServerののようなものはありません(私の知る限り)。出力 またはpostgresqlの返品 MySQLの句。



    1. MySQLJava更新構文

    2. SSISのマージ結合変換とルックアップ変換の違いは何ですか?

    3. mysqlのint(11)の列のサイズは何バイトですか?

    4. SQL日付に時間、分、秒を追加する