簡體   English   中英

將表中的數據插入SELECT結果

[英]INSERT data in table with result of a SELECT

我試圖用選擇的結果填充表,但是我總是收到以下錯誤:

密鑰'PRIMARY'的重復條目' fab_bloquer_jours = INSERT INTO fab_bloquer_joursiddaydate )VALUES(``,'4','2017-12-04 14:55:49')

我的表fab_bloquer_jours是:

1   id Primary  int(11)
2   day int(13)
3   date    datetime

我的查詢是:

$day=$data['fab_bloquer_jours___day'];

$query = $db->getQuery(true);
$query = "INSERT INTO fab_bloquer_jours (day)
SELECT * 
   FROM (
        SELECT DATE_ADD('2018-01-01', 
            INTERVAL n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) AS DATE 
          FROM (
              SELECT 0 AS num
              UNION ALL SELECT 1
              UNION ALL SELECT 2
              UNION ALL SELECT 3
              UNION ALL SELECT 4
              UNION ALL SELECT 5
              UNION ALL SELECT 6
              UNION ALL SELECT 7
              UNION ALL SELECT 8
              UNION ALL SELECT 9
         ) AS n1,
         (
              SELECT 0 AS num
              UNION ALL SELECT 1
              UNION ALL SELECT 2
              UNION ALL SELECT 3
              UNION ALL SELECT 4
              UNION ALL SELECT 5
              UNION ALL SELECT 6
              UNION ALL SELECT 7
              UNION ALL SELECT 8
              UNION ALL SELECT 9
        ) AS n2,
        (
              SELECT 0 AS num
              UNION ALL SELECT 1
              UNION ALL SELECT 2
              UNION ALL SELECT 3
              UNION ALL SELECT 4
              UNION ALL SELECT 5
              UNION ALL SELECT 6
              UNION ALL SELECT 7
              UNION ALL SELECT 8
              UNION ALL SELECT 9
        ) AS n3,
        (
              SELECT 0 AS num
              UNION ALL SELECT 1
              UNION ALL SELECT 2
              UNION ALL SELECT 3
              UNION ALL SELECT 4
              UNION ALL SELECT 5
              UNION ALL SELECT 6
              UNION ALL SELECT 7
              UNION ALL SELECT 8
              UNION ALL SELECT 9
        ) AS n4
    ) AS a
WHERE DATE >= '2018-01-01' AND DATE < '2019-01-01'
  AND WEEKDAY(DATE) = '$day'";
$db->setQuery($query);
$query=$db->execute();

我通過下拉列表獲取$date值。

在這里,我將不勝感激,因為我不知道如何使它工作。

刪除ID,它是空值,請參見下文:

INSERT INTO `fab_bloquer_jours` (`day`,`date`) VALUES ('4','2017-12-04 14:55:49');

在第二個查詢中,select語句錯誤。 您正在嘗試將其插入一列,但是您的select語句表示全選。 您為select語句所做的任何操作都必須放在方括號內並且作為一列。 例如

INSERT INTO fab_bloquer_jours (day) VALUES (your SELECT COLUMNNAME FROM TABLE)

嘗試將表格上的id列設置為自動遞增。 然后不要將其包括在您的插入語句中。

因此,以您的示例為例,在將id字段更新為自動遞增后,請嘗試以下查詢:

INSERT INTO fab_bloquer_jours (day,date) VALUES ('4','2017-12-04 14:55:49');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM