使用 WHERE 条件插入行

rwc*_*and 4 mysql insert select mysql-5.5

结构

1 个表名为:scan

2 列名为:iddate

问题

我有两个工作查询,一个 SELECT 和一个 INSERT,我想将它们合并在一起创建一个条件等于 0 的 INSERT。

查询1

如果数据库中最新的ID 行具有今天的扫描日期,则显示“1”,否则当不存在今天的日期时显示“0”。

SELECT
  COUNT(scan.date) AS datecheck
FROM scan
WHERE scan.id = (SELECT
    MAX(scan.id) AS datecheck
  FROM scan
  WHERE scan.date = CURDATE())
Run Code Online (Sandbox Code Playgroud)

查询2

如果今天没有条目,意味着结果为“0”,则创建一个包含 ID+1 和当前日期的新行。

INSERT INTO `scan`(`id`, `date`) SELECT (MAX(id)+1), CURDATE() FROM scan;
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几个小时了,但还没有成功,如果您能告诉我哪里出了问题并让我知道正确的查询是什么,我将不胜感激。谢谢。

dno*_*eth 5

重新表述您的查询,您似乎只是想检查今天的日期是否没有行。使其成为条件插入有点棘手:

INSERT INTO scan (id, date)
SELECT (MAX(id)+1), CURDATE()
FROM scan
HAVING COUNT(CASE WHEN scan.date = CURDATE() THEN 1 end) = 0;
Run Code Online (Sandbox Code Playgroud)

为了使其即使在空表下也能工作,请更改为(COALESCE(MAX(id),0)+1)