创建表TableA(id int,名称varchar(20),partNumber varchar(30));
值为:
insert into TableA values(1,'a1','10');
insert into TableA values(2,'a2','20');
insert into TableA values(3,'a3','30');
insert into TableA values(4,'a4','40');
创建表TableB(id int,名称varchar(20),零件号varchar(30));
insert into TableB values(5,'b1','10');
insert into TableB values(6,'b2','20');
insert into TableB values(7,'b3','60');
insert into TableB values(8,'b4','70');
我尝试了以下的查询,所有的结果都是相同的14个记录,这是不正确的。
查询1:
选择b.ID作为Bid,b.Name作为Bname,b.PartNumber作为BPart,a.ID作为Aid,a.Name作为Aname,a.PartNumber作为远离表BB左联接表a在a.PartNumber上!=b.PartNumber;
选择b.ID作为Bid,b.Name作为Bname,b.PartNumber作为BPart,a.ID作为Aid,a.Name作为Aname,a.PartNumber作为表b b,表a a中a.PartNumber!=b.PartNumber;
质疑三:
选择b.ID作为Bid,b.Name作为Bname,b.PartNumber作为BPart,a.ID作为Aid,a.Name作为Aname,a.PartNumber作为远离表b b左联接表a上的a PartNumber不在(选择a.ID作为表a上的AIDB b联接表a上的a PartNumber=b.PartNumber);
有人能帮我一下我在哪里犯错了吗?得到结果的正确方法是什么。
我期望输出是这样的:
+------+-------+-------+------+-------+-------+
| Bid | Bname | BPart | Aid | Aname | APart |
+------+-------+-------+------+-------+-------+
| 5 | b1 | 10 | 3 | a3 | 30 |
| 5 | b1 | 10 | 4 | a4 | 40 |
| 6 | b2 | 20 | 3 | a3 | 30 |
| 6 | b2 | 20 | 4 | a4 | 40 |
| 7 | b3 | 60 | 3 | a3 | 30 |
| 7 | b3 | 60 | 4 | a4 | 40 |
| 8 | b4 | 70 | 3 | a3 | 30 |
| 8 | b4 | 70 | 4 | a4 | 40 |
+------+-------+-------+------+-------+-------+
所以这里我的意思是在结果中我不想要TableA
的记录,其中PartNumber
是10,20
因为值存在于TableB的PartNumber
中。
您可以使用以下查询:
SELECT id, name, partNumber, Aid, Aname, Apart
FROM TableB AS t
CROSS JOIN (SELECT id AS Aid, name AS Aname, partNumber AS Apart
FROM TableA AS a
WHERE NOT EXISTS (SELECT 1
FROM TableB AS b
WHERE b.partNumber = a.partNumber)) AS c
ORDER BY id
其思想是使用not exists
子句从tablea
中选择所有必需的记录。然后用table1
交叉联接从该查询导出的表,以获得所有可能的组合。
此处演示
我有两个表--例如TableA和TableB,其中有一些数据,如本文所定义的--如何基于not条件连接两个表的结果 现在我计划为两个表创建Hibernate实体,并且这些实体彼此不相关。 现在我想要得到基于NOT条件的结果,就像我前面提到的文章中给出的那样。 结果是使用SQL查询: 现在如何为这样的场景创建HQL查询或条件查询。我已经阅读了HQL&Criteria查询的Hibernate文档,但我
我有三张桌子 表A 我需要根据传递的参数将TableA连接到TableB或TableC。ie 我尝试了以下查询 但是,这是给语法错误。有人能帮忙吗? 解决方案:
我有两张桌子:学生桌和收费桌 学生 费用 我想让学生(谁没有支付费用)为虚构:像这样... 我的代码是: 我在两个月的所有学生中都得到了零值------------------------------------- 修正后,这段代码可以在mysql工作台上运行,但不能在Java应用程序中运行。
问题内容: 我有2个表,说&定义如下: 创建表TableA(id int,name varchar(20),partNumber varchar(30)); 其值为: 创建表TableB(id int,name varchar(20),partNumber varchar(30)); 现在,在结果中,我要连接两个表,并从中获取所有记录,并且仅从中获取与的任何值都不匹配的列值的那些记录。 我在下面的
我正在开发一个基于SAAS的站点,我必须将两个DBs中的两个表连接起来,比如说DB1中的table1和DB2中的table2。我必须使用cakephp中的join从表1和表2获取匹配记录,但它会抛出如下错误: 错误:SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT命令拒绝用户'dbname'@'localhost'访问表'table_name'。 有谁能解释一下如何使用c
如何在使用某些条件筛选每个表之后连接两个表,并在获得筛选结果后连接两个结果。 已尝试代码,但显示语法错误