Mysql 如何在没有任何引用值的情况下使用JOIN获取表值?

Mysql 如何在没有任何引用值的情况下使用JOIN获取表值?,mysql,join,Mysql,Join,我有两个表,想加入这些表。 列名称旁边的(*)表示它是主键,(**)表示外键 //table_document ID_DOC* DOC STATUS DOC01 AAA 1 DOC02 BBB 1 DOC03 CCC 1 DOC04 DDD 1 DOC05 EEE 1 //table_vendor_document

我有两个表,想加入这些表。
列名称旁边的(*)表示它是主键,(**)表示外键

//table_document
ID_DOC*      DOC     STATUS
 DOC01       AAA          1
 DOC02       BBB          1
 DOC03       CCC          1
 DOC04       DDD          1
 DOC05       EEE          1

//table_vendor_document
   NO*   ID_VEND**     ID_DOC**
     1     VEND01       DOC01
     2     VEND01       DOC02
     3     VEND01       DOC03
     4     VEND01       DOC04
     5     VEND01       DOC05
     6     VEND02       DOC01
     7     VEND02       DOC02
     8     VEND02       DOC05
     9     VEND03       DOC03
    10     VEND03       DOC04
每个ID供应商应该有五个ID文档,我想知道每个ID供应商缺少哪个ID文档

我正在使用此查询:

SELECT table_vendor_document.ID_VEND,table_document.ID_DOC FROM `table_document` 
LEFT OUTER JOIN table_vendor_document 
    ON table_document.ID_DOC = table_vendor_document.ID_DOC 
WHERE table_vendor_document.ID_VEND = 'VEND03'
结果是:

ID_VEND     ID_DOC
VEND03       DOC03     
VEND03       DOC04
我的预期产出应该是:

ID_VEND     ID_DOC
VEND03        NULL     
VEND03        NULL     
VEND03       DOC03
VEND03       DOC04
VEND03        NULL

只需切换表顺序<代码>表\u供应商\u文档左连接表\u文档

SELECT table_vendor_document.ID_VEND,table_document.ID_DOC FROM `table_vendor_document` 
LEFT OUTER JOIN table_document
    ON table_document.ID_DOC = table_vendor_document.ID_DOC 
WHERE table_vendor_document.ID_VEND = 'VEND03'

您的“ON”条件使查询只检索表\供应商\文档的外键等于表\文档主键的行。在VEND03行中只有两个外键:DOC03和DOC04。VEND03行不引用表_文档的任何其他行,这就是为什么会得到这样的结果

我仍然没有得到想要的输出。了解左联接返回的内容:内部联接行加上由null扩展的不匹配左表行。始终知道作为左连接的一部分,您需要什么样的内部连接。一个WHERE或INTERNAL ON,在左联接ON删除任何由NULL扩展的行后,要求右表列不为NULL,即只保留内部联接行,即“将左联接转换为内部联接”。你有。你的可能复制品没有清楚地解释你想要什么作为输出。“每个ID供应商缺少哪个ID文件”不清楚。使用足够多的单词、句子和引用部分例子,使其清晰明了。显然:由于您的示例在ID_DOC中为NULL,因此任何一个表都可以是左连接的右表;但如果ID\u VEND中的值不为NULL,则不希望表\u vendor\u文档作为正确的表;所以,您希望表_文档作为正确的表。另外:为什么要编写
表\u vendor\u document.ID\u VEND='VEND03'
&如果您说“每个ID\u VEND”,则只显示VEND03行&缺少VEND02行?还有:你的头衔是难以理解的。PS在唯一的供应商ID和唯一的文档ID之间进行交叉连接,以获得所有可能的组合。然后使用反连接查找缺少的连接。