1

クエリの結果に属する$solution場合にのみ、配列を SQL テーブルに保存する必要があります。属していない場合は、行 $i を SQL テーブルに保存しないでください。以下のクエリは正しくないようです。説明されているタスクをどのように実装しますか? これを行うための正しいアプローチは何でしょうか?$solution[$i][0]SELECT num_arr FROM Schedule WHERE num_arr<>''

$query_land = "INSERT INTO `Sequence` (`num_arr`,`start`,`fin`,`way_id`) 
               VALUES ('".$solution[$i][0]."','".$solution[$i][1]."',
                                   '".$solution[$i][2]."','".$solution[$i][3]."') 
               WHERE '".$solution[$i][0]."' IN (SELECT num_arr 
                                                FROM Schedule 
                                                WHERE num_arr<>'')";
4

1 に答える 1

5

このINSERTステートメントには、次の 2 つのバリエーションがあります。

INSERT INTO tableX
    (a, b, c, ...)
VALUES
    (1, 2, 3, ...) ;

INSERT INTO tableX
    (a, b, c, ...)
SELECT
    1, 2, 3
FROM
    ... ;             --- the same or another table or many tables

dual、正確に 1 行のシステム テーブルです。色々なものに使えます。ここでは、句に入れる適切なテーブルがない場合にVALUES (...)a を a に書き換えるために使用されます。SELECT ...FROM

$query_land = "INSERT INTO `Sequence` (`num_arr`,`start`,`fin`,`way_id`) 
               SELECT '".$solution[$i][0]."','".$solution[$i][1]."',
                      '".$solution[$i][2]."','".$solution[$i][3]."'
               FROM dual 
               WHERE '".$solution[$i][0]."' IN (SELECT num_arr 
                                                FROM Schedule 
                                                WHERE num_arr<>'')";
于 2012-08-29T14:34:22.703 に答える