如果满足条件,则插入INTO

时间:2012-08-29 14:27:08

标签: php mysql sql

仅当$solution属于查询$solution[$i][0]的结果时,我才需要将数组SELECT num_arr FROM Schedule WHERE num_arr<>''保存到SQL表中。如果它不属于它,则行$ i必须不保存在SQL表中。以下提供的查询似乎不正确。我如何实现所描述的任务?这样做的正确方法是什么?

$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<>'')";

1 个答案:

答案 0 :(得分: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行的系统表。它可以用于各种事物。在这里使用它,所以VALUES (...)被重写为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<>'')";