[英]INSERT data in table with result of a SELECT
我試圖用選擇的結果填充表,但是我總是收到以下錯誤:
密鑰'PRIMARY'的重復條目'
fab_bloquer_jours
= INSERT INTOfab_bloquer_jours
(id
,day
,date
)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.