我做了这个查询,但它给了我错误,就像在标题
中一样INSERT INTO data_waktu_vaksinasi (id_binatang, id_vaksin, tanggal_vaksin, status_vaksin) VALUES
(1, 1, (SELECT DATE_ADD(max(tanggal_vaksin), INTERVAL 1 YEAR)) FROM data_waktu_vaksinasi, 'belum')
答案 0 :(得分:4)
MySQL 确实允许同一个表用于inserts
的源和目标。您只需要使用正确的语法:
INSERT INTO data_waktu_vaksinasi (id_binatang, id_vaksin, tanggal_vaksin, status_vaksin)
SELECT 1, 1, DATE_ADD(max(tanggal_vaksin), INTERVAL 1 YEAR), 'belum'
FROM data_waktu_vaksinasi;
答案 1 :(得分:2)
将源表放在subquery
中以解决此问题。 Mysql
不允许在DML
操作的
INSERT INTO data_waktu_vaksinasi
(id_binatang,
id_vaksin,
tanggal_vaksin,
status_vaksin)
SELECT 1,
1,
dt,
'belum'
FROM (SELECT Date_add(Max(tanggal_vaksin), interval 1 year) AS dt
FROM data_waktu_vaksinasi)a
答案 2 :(得分:1)
尝试此代码
INSERT INTO data_waktu_vaksinasi
(id_binatang, id_vaksin, tanggal_vaksin, status_vaksin)
VALUES
(
1,
1,
(
SELECT date FROM
(SELECT DATE_ADD(max(tanggal_vaksin), INTERVAL 1 YEAR) date
FROM data_waktu_vaksinasi, 'belum') subquery
)
)
我没有测试这个代码,但是我测试了一个等效代码(也是一个带有相同表的INSERT INTO
语句在子查询中,如在主查询中)
技巧
是带有相同表的子查询的 wrap 到另一个子查询中,它只查询实际子查询的SELECT
- 子句中的列。
结果:Mysql没有抱怨
我不知道为什么会这样 在我看来kina喜欢作弊