Mysql 无法将数据保留到临时表中

Mysql 无法将数据保留到临时表中,mysql,join,left-join,Mysql,Join,Left Join,我试图将一些数据连接到临时表的右侧,但它的功能并不像预期的那样-当我打开join时,它并不仅仅保留左侧的行 CREATE TEMPORARY TABLE wploc SELECT wp.name wpname, wp.id wpid, l.name lname, l.id lid FROM workplaces wp JOIN locations l ON wp.id = l.workplace_id ORDER BY wp.id; SELECT * from wploc 这将提供390个

我试图将一些数据连接到临时表的右侧,但它的功能并不像预期的那样-当我打开join时,它并不仅仅保留左侧的行

CREATE TEMPORARY TABLE wploc
SELECT wp.name wpname, wp.id wpid, l.name lname, l.id lid 
FROM workplaces wp
JOIN locations l ON wp.id = l.workplace_id
ORDER BY wp.id;

SELECT * from wploc
这将提供390个结果—我只想返回这些结果,我想从另一个表中加入更多的结果,但是当我这样做时,我会从右侧的表中获得所有结果:

CREATE TEMPORARY TABLE wploc
SELECT wp.name wpname, wp.id wpid, l.name lname, l.id lid 
FROM workplaces wp
JOIN locations l ON wp.id = l.workplace_id
ORDER BY wp.id;

SELECT * from wploc
LEFT JOIN employees e ON wploc.lid = e.location_id

这给出了e表的所有结果,就好像我正确地将它连接到workplaces表一样


如何使e结果仅显示在wploc中已有的值,即我创建上述临时表的390个结果?

这给出了e表中的所有结果。它给出了满足连接条件的所有结果。这就是它的工作原理。你想发生什么?如果你想说什么,我们可以告诉你如何实现。@MarkByers谢谢-我更新了QDo你有重复的e.location\u id值吗?你认为你得到了错误的结果,因为有390多行?你能给我们举几个例子行来说明这个问题吗?我们可以自己跑的东西。您甚至可以对问题进行演示。对于第二个查询,您是否可以反转表并删除左侧?例如,在wploc.lid=employees.location\u id上选择*从员工加入wploc。。。如果你在其他地方不需要临时表,你可以从employees e JOIN w ON w.lid=e.location\u id中选择*或者我遗漏了什么?