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声明有两种变体:

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 行的系统表。它可以用于各种事情。在这里使用它,因此 aVALUES (...)被重写为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 回答