我有两个具有相同列的表,但第二个表的列多于第一个表(InfoDate
)。
表1
KID ParentID KLevel
----------------------------------------
1 0 1
2 1 2
3 1 2
表2
KID ParentID KLevel InfoDate
------------------------------------------------------------
2 1 2 2015-12-31 00:00:00.000
我希望将第一个表中的所有记录插入到条件为InfoDate=2015-12-31 00:00:00.000
的第二个表中不存在的第二个表中
例如,在此示例示例中,必须将包含KID=1
和KID=3
的记录插入到表2中。
我做:
insert into table2 (KID , ParentID , KLevel)
select KID , ParentID , KLevel from table1
where not EXISTS(
SELECT KID , ParentID , KLevel FROM table2 WHERE InfoDate = '2015-12-31 00:00:00.000'
);
但是(0 row(s) affected)
答案 0 :(得分:2)
您的=bg($start, $end)
background: $start
background: -moz-linear-gradient(top, $start, $end)
background: -webkit-gradient(linear,0 0, 0 100%, from($start), to($end))
=shadow($distance, $opacity)
box-shadow: inset 0 0 $distance rgba(0,0,0,$opacity)
-moz-box-shadow: inset 0 0 $distance rgba(0,0,0,$opacity)
-webkit-box-shadow: inset 0 0 $distance rgba(0,0,0,$opacity)
#table_1
tr:nth-child(odd)
tr:nth-child(even)
+bg(#ccc,#eee)
+shadow(10px,.4)
tr:nth-child(even)
tr:nth-child(odd)
+bg(#ccc,#eee)
+shadow(10px,.4)
条件确实没有意义。现在,如果没有WHERE NOT EXISTS...
行,您只需检查。由于显然有这样的行,所以没有记录受到影响。
试试这个:
InfoDate = '2015-12-31 00:00:00.000'
答案 1 :(得分:1)
使用任何键值获取不存在的记录。
insert into table2 (KID , ParentID , KLevel)
select KID , ParentID , KLevel from table1
where KID NOT IN (
SELECT KID FROM table2 WHERE InfoDate = '2015-12-31 00:00:00.000'
);
答案 2 :(得分:0)
您需要将两个查询关联为:
insert into table2 (KID , ParentID , KLevel)
select t1.KID , t1.ParentID , t1.KLevel
from table1 t1
where not EXISTS(
SELECT *
FROM table2 t2
WHERE t2.KID = t1.KID AND t2.ParentID = t1.ParentID AND t2.KLevel = t1.KLevel
AND t2.InfoDate = '2015-12-31 00:00:00.000'
);
答案 3 :(得分:0)
如果KID在表格中是唯一的......
插入table2(KID,ParentID,KLevel) 从table1中选择KID,ParentID,KLevel 其中table1.KID不在( 选择不同的KID FROM table2 WHERE InfoDate =' 2015-12-31 00:00:00.000');