用于查找未引用记录的SQL查询

时间:2015-05-22 19:36:35

标签: mysql sql

我有两个通过ID字段绑定的表:

  

table1:id,name,type

     

table2:id,id_table1,date,status

我必须收集table1的所有记录,这些记录具有type字段的特定值且未在table2中引用以及table1的所有记录} table2中引用的status字段值为LEFT JOIN

对于第一部分,如果我没记错,我可以使用 LEFT JOIN table1.name LEFT JOIN table2 ON table2.id_table1 = table1.id WHERE (table1.value = 'value1') AND (table2.id_table1 IS NULL); 命令:

SELECT *
FROM contracts
    INNER JOIN
        (SELECT contractid, max(date) date 
        FROM contractlogs GROUP BY contractId) b 
    ON contracts.id = b.contractId

但是第二部分我迷路了......

我正在使用MySQL 5.6,我想定义一个View来处理这个问题。

3 个答案:

答案 0 :(得分:1)

我认为您可以将WHERE更改为:

WHERE (table1.value = 'value1') 
   AND (table2.id_table1 IS NULL 
        OR 
        ([the other table2 status criteria)
       )
;

答案 1 :(得分:1)

SELECT t1.*, t2.*
FROM table1 t1
LEFT JOIN table2 t2
  ON table2.id_table1 = table1.id
WHERE (t1.type= 'value1' AND t2.id IS NULL)
  OR (t2.status = 'certain status' )

答案 2 :(得分:1)

你可以试试这个......

SELECT T1.*,T2.*
FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.Id=T2.Id_Table1
WHERE T1.Value = 'value1' AND T2.id_table1 IS NULL
UNION 
SELECT T1.*,T2.*
FROM Table1 T1
INNER JOIN Table2 T2 ON T1.Id=T2.Id_Table1

WHERE T2.Status= 'Status Criteria'