我有一个包含以下列的源表:
我还有一个这样的目的地表:
目标表有1440行,填写了minute列(一天中每分钟一行)。
对于源表中的每一行,我需要在目标表中为适当的频道(总共有10个频道)填写一个“1”,在StartTime和FinishTime之间的每一分钟。
我只是在MySQL工作台(这是一个一次性的查询)中做这件事。什么是我的野兽方法?
谢谢,
-斯科特

最佳答案

伪代码:

SELECT DISTINCT ChannelNumber
FROM source

while ($row = fetch_assoc()) {
    $channel_col = 'ch'.$row['ChannelNumber']
    $sql =  "
        UPDATE destination
        JOIN source ON StartTime = destination.minutes
             AND source.ChannelNumber = $row[ChannelNumber]
        SET destination.$channel_col = 1
      ";
    query($sql);
}

通常,您必须考虑动态创建一个字符串,该字符串将成为一个SQL查询,以避免SQL注入,但由于所有数据都来自您的数据库中,所以这不应该是一个问题。

10-07 22:15