rwc*_*and 4 mysql insert select mysql-5.5
结构
1 个表名为:scan
2 列名为:id和date
问题
我有两个工作查询,一个 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)
我已经尝试了几个小时了,但还没有成功,如果您能告诉我哪里出了问题并让我知道正确的查询是什么,我将不胜感激。谢谢。
重新表述您的查询,您似乎只是想检查今天的日期是否没有行。使其成为条件插入有点棘手:
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)
| 归档时间: |
|
| 查看次数: |
10126 次 |
| 最近记录: |