我正在嘗試計算“記錄”表中的記錄并插入結果表中,但我只想計算今天的記錄。
下面您將看到我嘗試過的一些替代方案(我正在使用 MySQL),但我不斷收到此錯誤:
第 2 行 '' 旁邊的 SQL 中有語法錯誤
INSERT INTO results (Data,total)
VALUES (now(), (SELECT COUNT(*) FROM records WHERE Data = now());
此 SQL 也會導致錯誤:
INSERT INTO results (Data, total)
VALUES (now(), (SELECT COUNT(record.ID) AS day FROM record
WHERE date(Data) = date(date_sub(now(), interval 0 day));
接著
INSERT INTO resultS (Data,total)
VALUES (now(), (SELECT COUNT(*) FROM records
WHERE Data >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY));
還有一次嘗試:
INSERT INTO results (Data, Total)
VALUES (now(), (SELECT COUNT(*) FROM records
WHERE DATE(Data)= CURRENT_DATE() - INTERVAL 1 DAY));
這是我的 sql 配置人:
CREATE TABLE `records`
(
`ID` char(23) NOT NULL,
`Name` varchar(255) NOT NULL,
`Total` int(255) NOT NULL,
`Data` date NOT NULL,
`QrCode` varchar(255) NOT NULL,
`City` varchar(255) NOT NULL,
`Device` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `results`
(
`id` int(11) NOT NULL,
`total` int(11) NOT NULL,
`Data` date DEFAULT NULL,
`grown` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
uj5u.com熱心網友回復:
您已將grown列定義為非空,因此您不能將其放為空。
我的查詢有效:
INSERT INTO results
VALUES (1, (SELECT COUNT(1) FROM records WHERE Data= now()), now(), 1);
您應該為成長列定義默認值。與列 ID 相同的情況。您應該為列 id 定義序列:
id NOT NULL AUTO_INCREMENT;
uj5u.com熱心網友回復:
INSERT INTO results (Data, total)
SELECT CURRENT_DATE(), COUNT(*)
FROM records
WHERE DATE(Data) = CURRENT_DATE();
uj5u.com熱心網友回復:
我建議在你的桌子上考慮 uniq 索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/504042.html
