Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL从两个不同的表中选择数据,并且没有通用的变量名_Mysql_Sql_Select - Fatal编程技术网

MYSQL从两个不同的表中选择数据,并且没有通用的变量名

MYSQL从两个不同的表中选择数据,并且没有通用的变量名,mysql,sql,select,Mysql,Sql,Select,我有两张桌子:雇员和顾客。客户有客户ID、姓名、客户状态、客户代表,员工有员工名、姓、员工电话号码、员工号码员工编号=客户代表。 我试图提取为居住在CA的客户服务的员工的名字、姓氏和员工电话号码。这是我的代码,但我得到一个错误,它返回多行 SELECT EMP_LNAME, EMP_FNAME, EMP_PHONE FROM employee WHERE EMP_NBR = (SELECT CUST_REP

我有两张桌子:雇员和顾客。客户有客户ID、姓名、客户状态、客户代表,员工有员工名、姓、员工电话号码、员工号码员工编号=客户代表。

我试图提取为居住在CA的客户服务的员工的名字、姓氏和员工电话号码。这是我的代码,但我得到一个错误,它返回多行

SELECT EMP_LNAME,
       EMP_FNAME,
       EMP_PHONE 
FROM employee 
WHERE EMP_NBR =
              (SELECT CUST_REP
               FROM customer 
               WHERE CUST_STATE='CA') ;

发生的情况是,您的内部查询返回多行,因此将其更改为
where EMP_NBR in
以检索所有匹配项

您的查询存在的问题是说
=(返回多行的集合)
没有意义,因为不清楚到底应该匹配什么。

当期望子查询中返回一组结果(而不是单个标量结果)时,使用
IN()
而不是
=

或者,您可以使用内部联接(或与WHERE筛选器交叉联接)来更有效地执行此操作:

SELECT EMP_LNAME, EMP_FNAME, EMP_PHONE
FROM employee
INNER JOIN customer ON employee.EMP_NBR = customer.CUST_REP
WHERE customer.CUST_STATE = 'CA';

您不需要嵌套查询-最好这样编写查询

select employee.emp_lname, employee.emp_fname, employee.emp_phone
from employee inner join customer
on employee.emp_nbr= customer.cust_rep
where customer.cust_state = 'CA'
您收到该错误消息是因为在加利福尼亚州有几个客户。以上查询不会有问题

SELECT EMP_LNAME,
       EMP_FNAME,
       EMP_PHONE 
FROM employee 
WHERE EMP_NBR IN
                (SELECT CUST_REP 
                 FROM customer 
                 WHERE CUST_STATE='CA') ;
SELECT EMP_LNAME,
       EMP_FNAME,
       EMP_PHONE 
FROM employee 
WHERE EMP_NBR IN
                (SELECT CUST_REP 
                 FROM customer 
                 WHERE CUST_STATE='CA') ;