如何左连接和删除两个表之间的公共字段

时间:2017-05-10 21:27:41

标签: sql postgresql

我有以下表格: table1(p,crc,rti,l1) table2(p,crc,rti)

我想从table1中找到p和crc与table2的值相等的所有记录但是删除那些具有相同p和crc值的记录在两个表中具有不同的rti值 我试着

Select * FROM table1 t1 
LEFT JOIN table2 t2
ON t1.p = t2.p and t1.crc = t2.crc 

但不知道如何删除常用记录

3 个答案:

答案 0 :(得分:1)

列出您真正想要的列可能更好。但是,如果您想要的唯一列是连接键,则可以使用USING

SELECT *
FROM table1 t1 LEFT JOIN
     table2 t2
     USING (p, crc);

答案 1 :(得分:0)

我不确定我完全理解你的问题。假设你在表中有这样的记录: 表1:

  1. (p,crc,rti,l1)值(1,23,6,8)
  2. (p,crc,rti,l1)值(1,23,7,5)
  3. (p,crc,rti,l1)值(1,23,9,2)
  4. 表2:

    1. (p,crc,rti)值(1,23,7)
    2. (p,crc,rti)值(1,23,8)
    3. (p,crc,rti)值(1,23,9)
    4. 如果要显示表1中table1.rti不等于table2.rti的所有记录,请尝试以下操作。这将为您提供表1第1行(上图)。

      SELECT t1.*
      FROM table1 t1 LEFT JOIN table2 t2 on 
           t1.p = t2.p AND t1.crc = t2.crc
      WHERE
           t1.rti <> t2.rti
      

      根据您的评论,可以尝试使用MINUS操作符。

      SELECT * FROM table1
      MINUS
      SELECT t1.*
      FROM table1 t1 LEFT JOIN table2 t2 on 
           t1.p = t2.p AND t1.crc = t2.crc
      

答案 2 :(得分:0)

似乎您要排除def build_model(): tf.reset_default_graph() net = tflearn.input_data([None,11]) #Hidden layer net = tflearn.fully_connected(net,1,activation='softmax') net = tflearn.regression(net,optimizer='sgd', learning_rate=0.1, loss="categorical_crossentropy") model = tflearn.DNN(net) return model model = build_model() model.fit(np.asarray(Xtrain),np.asarray(Ytrain),validation_set=0.1,show_metric=True,n_epoch=30,batch_size=50) 中的所有记录,其中table1包含至少一条记录,其中table2p相同但crc不同{{1} }}。 这可以写成&#34;从table1获取所有记录,其中rti&#34;中不存在具有相同p和相同crc但不同rti的记录的记录。

table2

希望我帮到你。