MySQL不存在不起作用

时间:2018-03-12 08:46:24

标签: mysql

我正在尝试获取另一个表中缺少条目的记录的结果。我已经尝试过使用NOT IN而不是EXIST但我无法获得理想的结果。输出应该是美国签证,因为我的用户在表tbl_personnel_documents上没有美国签证,但我总是得到一个空行。

注意:我试图通过仅使用vessel_id和lastJoinedVsl来获得结果,在这种情况下,id为4号。

这是我的代码和示例数据: http://sqlfiddle.com/#!9/46790e/1

请帮忙。 非常感谢

1 个答案:

答案 0 :(得分:0)

SQL DEMO

查询应为:

SELECT tpi.name, td.documentName
FROM tbl_documents AS td
LEFT JOIN tbl_personnel_documents AS tpd ON td.id=tpd.document_id
LEFT JOIN tbl_personnel_info AS tpi ON tpd.personnel_id=tpi.id 
and tpi.lastJoinedVsl = 4 and tpi.emp_status = 'ON-BOARD'
LEFT JOIN tbl_contracts AS tc ON tpi.id=tc.personnel_id 
and tc.personnel_status = 'ACTIVE' AND tc.vessel_id = 4
LEFT JOIN tbl_vessels AS tv ON tpi.lastJoinedVsl=tv.id
WHERE NOT EXISTS (SELECT tpd.document_id
                FROM tbl_personnel_documents AS tpd
                WHERE td.id = tpd.document_id
                )

请注意

您对用于Where的表格使用LEFT JOIN条件是错误的,它们应该在我使用的JOIN条件中使用。