Sql 将表A第x列和表B第y列中的不同条目插入表C中的两列
我试图将表Sql 将表A第x列和表B第y列中的不同条目插入表C中的两列,sql,sql-server,Sql,Sql Server,我试图将表A的流量计列和表B的记录时间列的不同组合插入表C中,以确保不选择此类组合。 此外,如果使用WHERE子句在表C中找到此组合,则查询应避免将select查询输出插入表C 我已经写了下面的脚本,但它似乎不工作。特别是用于从两个联接表中筛选不同项的独特筛选器: INSERT INTO C (MeterId,PresRecTimestamp,PresUnits,PresVal) SELECT DISTINCT A.FlowMeter, B.RecordTime,
A
的流量计列和表B
的记录时间列的不同组合插入表C
中,以确保不选择此类组合。
此外,如果使用WHERE
子句在表C
中找到此组合,则查询应避免将select查询输出插入表C
我已经写了下面的脚本,但它似乎不工作。特别是用于从两个联接表中筛选不同项的独特筛选器:
INSERT INTO C (MeterId,PresRecTimestamp,PresUnits,PresVal)
SELECT DISTINCT A.FlowMeter,
B.RecordTime,
substring(B.FormattedValue,
CHARINDEX(' ',B.FormattedValue)+1,
LEN(B.FormattedValue)),
substring(B.FormattedValue, 1, CHARINDEX(' ',B.FormattedValue)-1)
FROM B
INNER JOIN A ON A.Id = B.Id
WHERE NOT EXISTS (SELECT * FROM C
WHERE C.MeterId = A.FlowMeter
AND C.PresRecTimestamp = B.RecordTime)
非常感谢您的帮助。我不知道您当前的查询有什么问题,但您可以简单地切换到“仅插入”合并。。。当不匹配时
insteadDISTINCT为您提供不同的行。因此,仅从技术角度来看,可以为同一流量计和记录时间获取两条记录,但格式不同的值子字符串也是所选行的一部分。这是否真的发生取决于你的数据。BTW:子串表达式似乎表明你在一个字符串中有多个值(一个值在空白之前和一个之后)。这不应该在关系数据库中完成。改为使用两个单独的列。感谢您的回复,因此我认为如果我修改了Distinct,仅从其他行中选择流量计和记录时间的Distinct组合,应该可以解决我的问题,您有什么建议吗?