gpt4 book ai didi

mysql - 增加一个查询结果显示精确一次

转载 作者:行者123 更新时间:2023-11-29 06:48:48 24 4
gpt4 key购买 nike

一项志愿者工作要求我与 MySQL 数据库搏斗,这是我以前从未做过的,所以请接受我对我的问题可能非常基本的性质的道歉!我已经阅读了很多关于将查询结果放入变量的类似问题,但其中大部分要么不相关,要么就在我的脑海中。

将要参加 session 的用户已经回答了一项调查,以提供有关他们何时有空的信息。我需要将此数据复制到计划创建软件使用的完全独立的表中。幸运的是,我将调查设置为以软件时间段 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, session 有一些项目安排在半小时。每个半小时时间段都有一个整小时时间段的 ID 号 + 1。假设 12:00 有空的任何人在 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'
...

但当然我宁愿有一个查询而不是两个。

如有任何帮助,我们将不胜感激。谢谢!

干杯,玫瑰

最佳答案

您需要使用 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
...

关于mysql - 增加一个查询结果显示精确一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16870393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com