与查询的输出混淆

时间:2013-08-18 10:39:13

标签: mysql performance oracle

我必须在emp_mtg ='141'along上的empmtg表中查询emp_id,并在用户表中查询我需要在同一查询中获取的名称。

SELECT emp.emp_id,mast.name
FROM empmtg emp,users mast
WHERE emp.emp_mtg='141'; 

这需要从empmtg表中选择empid和来自users表的名称,条件是empmtg表中的mtg id应该是141.该表中只有5条记录,mtg id为141.但是我得到大约1000s数据。

我也试过这个,但它只产生3个记录输出

SELECT emp.emp_id,mast.name
FROM empmtg emp,users mast
WHERE emp.emp_mtg='141' and emp.emp_id=mast.id
然后我去了加入

SELECT emp.emp_id,mast.name
FROM empmtg emp
LEFT JOIN users mast
ON emp.emp_id=mast.id
WHERE emp.emp_mtg='141'; 

这产生了5条记录的输出,但名称都是空的。我在用户表中检查了名称 not null

我有一个答案选择内部选择,我认为这不是正确的做法。但我不喜欢以这种方式查询。但这产生了预期的结果。

任何人都可以帮助我找到更好的解决方案。

1 个答案:

答案 0 :(得分:2)

 SELECT emp.emp_id,mast.name
 FROM  empmtg emp
 left JOIN  users mast
 ON emp.emp_id=mast.id
 WHERE emp.emp_mtg = 141;

此处为working demo