Mysql 精确地增加查询结果显示一次

Mysql 精确地增加查询结果显示一次,mysql,Mysql,一个志愿者工作要求我与MySQL数据库搏斗,这是我以前从未做过的,所以请接受我的道歉,因为我的问题可能非常基本!我已经阅读了很多关于将查询结果放入变量的类似问题,但大多数问题要么不相关,要么直接超出了我的理解范围 将要参加会议的用户已经回答了一项调查,以提供他们何时有空的信息。我需要将这些数据复制到时间表创建软件使用的完全独立的表中。幸运的是,我将调查设置为以软件的时隙ID号的形式存储每个答案 我有一个如下开头的查询: INSERT INTO user_time_slots (user_id,d

一个志愿者工作要求我与MySQL数据库搏斗,这是我以前从未做过的,所以请接受我的道歉,因为我的问题可能非常基本!我已经阅读了很多关于将查询结果放入变量的类似问题,但大多数问题要么不相关,要么直接超出了我的理解范围

将要参加会议的用户已经回答了一项调查,以提供他们何时有空的信息。我需要将这些数据复制到时间表创建软件使用的完全独立的表中。幸运的是,我将调查设置为以软件的时隙ID号的形式存储每个答案

我有一个如下开头的查询:

INSERT INTO user_time_slots (user_id,day_time_slot_id,available)
SELECT users.id, question.answer, '1'
...
结果是像这样的行

455,17,1
455,29,1
466,13,1
到目前为止还不错。然而!这些都是整小时的时间段,比如12:00和15:00,会议在半小时内安排了一些项目。每个半小时的时隙都有一个整小时时隙的ID号+1。假设12:00有空的人12:30也有空,我希望得到如下结果

455,17,1
455,18,1
455,29,1
455,30,1
466,13,1
466,14,1
我走了半个小时,然后迷路了;我不知道如何在将
日期时间槽id设置为
问题之间切换。回答
并将其设置为
@半小时
。没有荒谬的扭曲,这是可行的吗

如果没有,我的备份计划是按上述方式运行查询一次,按以下方式运行一次

INSERT INTO user_time_slots (user_id,day_time_slot_id,available)
SELECT users.id, @half_hour := question.answer + 1, '1'
...
但我当然希望有一个问题而不是两个问题

任何帮助都将不胜感激。谢谢大家!

干杯,
Rose

您需要使用UNION生成多组行:

INSERT INTO user_time_slots (user_id, day_time_slot_id)
SELECT users.id, question.answer, '1'
...
UNION
SELECT users.id, question.answer+1, '1'
...
如果那些
中的
子句很昂贵,另一种方法是使用联接:

INSERT into user_time_slots (user_id, day_time_slot_id)
SELECT users.id, question.answer + increment, '1'
...
JOIN (SELECT 0 increment UNION SELECT 1 increment) x
...
试一试


@用户2442673您的问题需要更多帮助吗?
INSERT INTO user_time_slots (user_id,day_time_slot_id,available)
SELECT users.id, question.answer, '1'
...
UNION ALL
SELECT users.id, question.answer + 1, '1'
...