我在Windows7平台和Qt5上使用MS SQL Server 2012来开发使用数据库的应用程序。我擅长Qt,但我没有SQL技能
目前我有一个名为Devices
的表,如下所示:
DeviceSerial DeviceIPAddr DeviceSwVersion
===========================================
1000 192.168.1.1 8.00
1043 192.168.1.2 8.00
1045 192.168.1.2 8.01
1049 192.168.1.3 8.00
1055 192.168.1.4 8.00
1058 192.168.1.6 8.00
1060 192.168.1.5 8.00
1061 192.168.1.8 8.01
1066 192.168.1.3 8.00
1070 192.168.1.10 8.00
1071 192.168.1.12 8.00
...
还有另一个名为CommandQueue
的表,(它是空的或应该在此操作之前?)并且应该根据第一个表字段DeviceIPAddr
和数据来填充数据。我的应用程序中的参数(整数)的值,如下所示:
TargetIP CommandID
========================
192.168.1.1 30
192.168.1.2 30
192.168.1.3 30
192.168.1.4 30
192.168.1.5 30
192.168.1.6 30
192.168.1.8 30
192.168.1.10 30
192.168.1.12 30
...
对于commandID
表的所有行,CommandQueue
的值在一个时刻是相同的。为了示例/示例,我选择了30.
如何创建SQL查询以填充CommandQueue
表?
答案 0 :(得分:2)
使用INSERT INTO .. SELECT FROM
构建
insert into CommandQueue(TargetIP, CommandID)
select DeviceIPAddr,
@someparameter_value
from Devices;
如果你想说
,你也可以硬编码那个值insert into CommandQueue(TargetIP, CommandID)
select DeviceIPAddr, 30 //assuming CommandID is INT
from Devices;
根据您的评论,您可以更改查询本身,如
insert into CommandQueue(TargetIP, CommandID)
select d.DeviceIPAddr,
@someparameter_value
from Devices d
left join CommandQueue ck on d.DeviceIPAddr = ck.TargetIP
and ck.CommandID <> @someparameter_value
where ck.TargetIP is null;
答案 1 :(得分:1)
INSERT INTO CommandQueue
( TargetIP ,
CommandID )
SELECT DISTINCT -- Only unique rows
DeviceIPAddr ,
@parameter1
FROM Devices a
LEFT OUTER JOIN CommandQueue b ON a.DeviceIPAddr = b.TargetIP
AND b.CommandID = @parameter1
WHERE b.DeviceIPAddr IS NULL
AND a.DeviceSwVersion = 8
以下内容将仅向CommandQueue插入DeviceIPAddr + @ parameter1尚未在CommandQueue中的设备中的数据。插入的记录必须具有DeviceSwVersion = 8。
/* add author below title on single product */
function cn_add_add_subhead_to_title() {
global $woocommerce, $post;
$meta = get_post_meta( $post->ID, '_text_field', true );
if( $meta != '' ) {
?>
<div class="cn-subhead">
by <?php echo get_post_meta( $post->ID, '_text_field', true ); ?>
</div>
<?php
}
}
add_action( 'woocommerce_single_product_summary', 'cn_add_add_subhead_to_title', 6 );