Mysql 为什么左连接将第二个表的id保留为空?
请先参考以下答案: 因此,在这个答案中,它提供了一种基于一个不同列及其对应列获取数据的方法。我理解,它是如何在t1.lastname>t2.lastname或t1.lastnameMysql 为什么左连接将第二个表的id保留为空?,mysql,sql,Mysql,Sql,请先参考以下答案: 因此,在这个答案中,它提供了一种基于一个不同列及其对应列获取数据的方法。我理解,它是如何在t1.lastname>t2.lastname或t1.lastname
我想我在这里遗漏了一些东西。谁能帮帮我吗?提前感谢。左连接将显示左表中JoinValue的左部分,并将显示: 若联接条件为,则联接右侧部分的右表中的值 完成或 如果未满足联接条件,则为空值 例如:
INSERT INTO #test (id, firstname, lastname)
VALUES
(1, 'A', 'A'),
(2, 'B', 'B'),
(3, 'A', 'B'),
(4, 'B', 'C')
SELECT t1.*, t2.*
FROM #test AS t1
LEFT JOIN #test AS t2
ON t1.firstname = t2.firstname
AND t1.lastname < t2.lastname
它显示t1中的所有行,但最后两行的t2将为空,因为连接条件t1.lastnameSELECT t1.*, t2.*
FROM #test AS t1
LEFT JOIN #test AS t2
ON t1.firstname = t2.firstname
AND t1.lastname < t2.lastname
WHERE t2.id IS NULL;
您将结果限制为未满足联接条件的行。MySQL不支持表语法这是SQL Server{MSSQL SYNTAX谢谢。由于某些限制,我还不能对你的答案进行投票,但我已经接受了你的答案。一般来说,一个开始提到上一个答案的问题不会受到欢迎。@GordonLinoff,我明白了。那么,我如何获得对上一个答案的澄清?
SELECT t1.*, t2.*
FROM #test AS t1
LEFT JOIN #test AS t2
ON t1.firstname = t2.firstname
AND t1.lastname < t2.lastname
WHERE t2.id IS NULL;