我有一个包含以下列的源表:
我还有一个这样的目的地表:
目标表有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注入,但由于所有数据都来自您的数据库中,所以这不应该是一个问题。