有两个表A和B具有相同的结构(列数,列名等)。 A和B都没有主键约束。某些列值可以为null,但不作为约束提及。
创建表格如下所示
CREATE TABLE IF NOT EXISTS TableA
( col1 INT,
col2 VARCHAR(50)
col3 BIGINT )
我需要删除A中的行,即B中的A = A - B
原始表中有大约100列(我已在上面对其进行了简化)。所以列出所有列是不可取的。
我该如何完成这项任务?
我必须使用INSERT INTO从另一个表C中添加行。
INSERT INTO tableA VALUES
(
SELECT * From tableC
EXCEPT
SELECT * from tableA
)
答案 0 :(得分:0)
将表A的左连接与表B一起使用,并选择所有列 加入时“ON”条件选择表B中任何列中具有空值的那些行或记录。 例如:
表A:
id name data
1 DAN 123
2 ANTONY 234
3 DAN 456
4 DAN 856
5 JOSEPH 546
6 ANTONY 784
7 JOSEPH 896
表B:
id name data
1 DAN 123
5 JOSEPH 546
7 JOSEPH 896
上述问题的QUERY 是:
SELECT A.id,A.name,A.data
FROM A
LEFT JOIN B
ON A.id = B.id
AND A.name = B.name
AND A.data = b.data
WHERE B.id IS NULL;
结果是:
id name data
2 ANTONY 234
3 DAN 456
4 DAN 856
6 ANTONY 784
您也可以在以下链接中查看:
答案 1 :(得分:0)
delete from A where (column1, column2) not in
((
select column1, column2from A
minus
select column1, column2 from B
))
在select语句中包含表中的所有列。正如您所提到的,两个表具有相同数量的列和名称,此查询将适合您
答案 2 :(得分:0)
您可以使用A和B表之间的内部联接
从A中删除数据import tensorflow as tf
scaffold = tf.train.Scaffold(saver=tf.train.Saver(max_to_keep=10))
with tf.train.MonitoredTrainingSession(scaffold=scaffold) as sess:
...
尝试按照演示