繁体   English   中英

MySQL SELECT 使用 WHERE 子句查询不从两个表返回行

[英]MySQL SELECT Query with WHERE clause Not returning rows from two tables

我有两个表格 InvoicePDF 和 UserMaster。 它们使用公共列 (CompanyID) 连接。 当我尝试运行以下查询时,我得到空的结果集。 想知道为什么?

顺便说一句,我希望在 CustomerID 为 3 的第二个表中返回与 CompanyID 匹配的第一个表的所有行。

SELECT A.CompanyID,
B.COMPANYID,
B.CUSTOMERID,
A.InvPDFFileName,
A.InvMonth,
A.InvYear,
A.InvoiceID 
FROM InvoicePDF A, UserMaster B 
WHERE B.CompanyID=A.CompanyID and B.CustomerID=3

使用左连接并在 ON Cluase 中应用您的条件B.CustomerID=3 - 并始终使用显式连接而不是隐式连接

SELECT A.CompanyID,B.COMPANYID,
B.CUSTOMERID,A.InvPDFFileName,
A.InvMonth,A.InvYear,A.InvoiceID 
FROM InvoicePDF A left join UserMaster B on B.CompanyID=A.CompanyID and B.CustomerID=3

您的查询按预期工作

DROP TABLE IF EXISTS INVOICEPDF,USERMASTER;
CREATE TABLE INVOICEPDF(COMPANYID INT   , InvPDFFileName varchar(3),InvoiceID int);
create table usermaster(COMPANYID int,CUSTOMERID int);

insert into invoicepdf values
(1,'aaa',1),(2,'bbb',2),(1,'aaa',3);
insert into usermaster values
(1,3),(2,4),(3,3);



SELECT A.CompanyID,
B.COMPANYID,
B.CUSTOMERID,
A.InvPDFFileName,
#A.InvMonth,
#A.InvYear,
A.InvoiceID 
FROM InvoicePDF A, UserMaster B 
WHERE B.CompanyID=A.CompanyID and B.CustomerID=3;

+-----------+-----------+------------+----------------+-----------+
| CompanyID | COMPANYID | CUSTOMERID | InvPDFFileName | InvoiceID |
+-----------+-----------+------------+----------------+-----------+
|         1 |         1 |          3 | aaa            |         1 |
|         1 |         1 |          3 | aaa            |         3 |
+-----------+-----------+------------+----------------+-----------+
2 rows in set (0.00 sec)

这意味着您的一个或多个 where 条件是错误的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM