在MySQL中模拟一个包含多个表和连接的Intersect
我需要在MySQL中模拟Intersect查询在MySQL中模拟一个包含多个表和连接的Intersect,mysql,sql,intersect,Mysql,Sql,Intersect,我需要在MySQL中模拟Intersect查询 SELECT c.cust_code, cust_fname, cust_lname FROM lgcustomer c JOIN lginvoice i ON c.cust_code = i.cust_code WHERE employee_id = 83649 INTERSECT SELECT c.cust_code, cust_fname, cust_lname FRO
SELECT c.cust_code, cust_fname, cust_lname
FROM lgcustomer c JOIN lginvoice i ON c.cust_code = i.cust_code
WHERE employee_id = 83649
INTERSECT
SELECT c.cust_code, cust_fname, cust_lname
FROM lgcustomer c JOIN lginvoice i ON c.cust_code = i.cust_code
WHERE employee_id = 83677
ORDER BY cust_lname, cust_fname;
我曾尝试使用EXISTS,但没有成功。我想我加入错了
SELECT C.CUST_CODE, CUST_FNAME, CUST_LNAME
FROM LGCUSTOMER C JOIN LGINVOICE I ON C.CUST_CODE = I.CUST_CODE
WHERE EMPLOYEE_ID = 83649
AND EXISTS (SELECT *
FROM LGCUSTOMER C JOIN LGINVOICE I ON C.CUST_CODE = I.CUST_CODE
WHERE EMPLOYEE_ID = 83677)
ORDER BY CUST_LNAME, CUST_FNAME;
各表如下:
+-------------+|客户|
+-------------+
|客户代码|
|客户名称
|客户名称
+-------------+ 和
+--------------+
|LGINVOICE|
+--------------+
|客户代码|
|员工ID |
+--------------+
我需要一个查询来从两个唯一的员工(83649和83677)提取所有具有发票的客户代码。Hmmm。我想到了聚合:
SELECT c.cust_code, cust_fname, cust_lname
FROM lgcustomer c JOIN
lginvoice i
ON c.cust_code = i.cust_code
WHERE employee_id IN ( 83649, 83677 )
GROUP BY c.cust_code, cust_fname, cust_lname
HAVING COUNT(DISTINCT employee_id) = 2;
这也会删除重复项,
INTERSECT
您可以使用两个子查询之间的内部joij模拟相交
select * from (
SELECT c.cust_code, cust_fname, cust_lname
FROM lgcustomer c
JOIN lginvoice i ON c.cust_code = i.cust_code
WHERE employee_id = 83649
) t1
INNER JOIN (
SELECT c.cust_code, cust_fname, cust_lname
FROM lgcustomer c
JOIN lginvoice i ON c.cust_code = i.cust_code
WHERE employee_id = 83677
) t2 on t1.cust_code = t2.cust_code
ORDER BY cust_lname, cust_fname;
你能说明你想做什么吗?你的问题是最后一段吗?是的,这很好用!我还在学习SQL,谢谢你的帮助!