IN没有返回所需的解决方案?

时间:2017-01-24 12:00:07

标签: mysql

所以基本上我有2个表,一个是客户,另一个是部门,它们都有一个共同的属性,'分支'。

我试图获取department_manager(来自department表) 和customer_name(来自客户表)

所以我的查询是

     SELECT department_manager,customername FROM customer,department WHERE 
 customer.branch=department.branch;

这给了我理想的解决方案。

但后来我想到使用子查询获得相同的结果

    SELECT department_manager,customername FROM customer,department      WHERE 
 customer.branch IN ( select branch from department);

这并没有给我第一个给我的理想解决方案。如果它们涉及公共属性即分支,我基本上想要加入这两个表。

2 个答案:

答案 0 :(得分:2)

你完全错了。在第二个查询中,您有两个对department的引用。他们是独立的。

编写查询的正确方法是使用显式JOIN

SELECT d.department_manager, c.customername
FROM customer c JOIN
     department d
     ON c.branch = d.branch;

简单规则:从不FROM子句中使用逗号。

答案 1 :(得分:0)

如果你特别喜欢使用子查询..

{{1}}