志愿者的演出要求我与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,会议在半小时内安排了一些项目。每个半小时的时段都有一个整数小时时段+ 1的ID号。假设12点的任何人都可以在12:30使用,我希望得到的结果看起来像
455,17,1
455,18,1
455,29,1
455,30,1
466,13,1
466,14,1
我到@half_hour := question.answer + 1
,然后我迷路了;我不知道如何设置day_time_slot_id
到question.answer
并将其设置为@half_hour
。这是否可行,没有荒谬的扭曲?
如果没有,我的备份计划是按上述方式运行一次查询,一次运行
INSERT INTO user_time_slots (user_id,day_time_slot_id,available)
SELECT users.id, @half_hour := question.answer + 1, '1'
...
但当然我宁愿只有两个查询。
非常感谢任何帮助。谢谢!
干杯, 玫瑰
答案 0 :(得分:1)
您需要使用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'
...
如果那些WHERE
条款很昂贵,另一种方法是使用JOIN:
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
...
答案 1 :(得分:1)
尝试
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'
...