标题:小白提问:关于筛选出两个表有字段相同的数据
只看楼主
chaosirzzz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-9-13
结帖率:100%
已结贴  问题点数:20 回复次数:12 
小白提问:关于筛选出两个表有字段相同的数据
A表和B表都有字段 idnumber ,要把 A表中和B表在idnumber字段重复的数据输出,我现在用的是
select * from B inner join A ON A.idnumber = B.idnumber
但是系统显示命令中有不能识别的短语或关键字,请问是哪里错了,各位大神好办法吗,我知道我现在还很基础。。。
搜索更多相关主题的帖子: 相同 数据 两个表 字段 提问 
2022-02-20 21:46
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:10 
把A、B表的表名分别改为A1、B1试试
select A1.idnumber c1, B1.idnumber c2 from B1 inner join A1 ON A1.idnumber = B1.idnumber
示例
CREATE CURSOR a1 (b1 c(10))
INSERT INTO a1 VALUES ("100")
INSERT INTO a1 VALUES ("200")
CREATE CURSOR a2 (b1 c(10))
INSERT INTO a2 VALUES ("200")
INSERT INTO a2 VALUES ("300")
SELECT a1.b1 c1, a2.b1 c2 FROM a1 INNER JOIN a2 ON a1.b1 == a2.b1

坚守VFP最后的阵地
2022-02-20 22:21
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
select * from 表A a,表B b where a.idnumber = b.idnumber

[此贴子已经被作者于2022-2-21 15:51编辑过]

2022-02-21 07:40
chaosirzzz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-9-13
得分:0 
回复 2楼 sdta
请问这个c1 c2该怎么理解呢
2022-02-21 08:57
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用chaosirzzz在2022-2-21 08:57:36的发言:

请问这个c1 c2该怎么理解呢

select 查询语句中,你2个表,有相同名称的字段,你用*,生成的新表,就会有2个相同字段名称,是不可以的
如:
表1(哈哈1,哈哈2,哈哈3)
表2(哈哈1,哈哈2,哈哈3)
select * from 表1,表2 where 表1.哈哈1=表2.哈哈1
这样,理论上生成的结果是6个字段,但是,上面的写法是错误的
哈哈1,哈哈2,哈哈3,哈哈1,哈哈2,哈哈3
正确写法是
select 表1.* from 表1,表2 where 表1.哈哈1=表2.哈哈1
但如果你,也想显示表2的字段,
如,你要显示 表1.哈哈1和表2.哈哈1,这2个,那就只能用到别名
select 表1.*,表2.哈哈1 as haha1 from 表1,表2 where 表1.哈哈1=表2.哈哈1 && haha1 是“表2.哈哈1”的别名
2022-02-21 12:13
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用chaosirzzz在2022-2-20 21:46:23的发言:

A表和B表都有字段 idnumber ,要把 A表中和B表在idnumber字段重复的数据输出,我现在用的是
select * from B inner join A ON A.idnumber = B.idnumber
但是系统显示命令中有不能识别的短语或关键字,请问是哪里错了,各位大神好办法吗,我知道我现在还很基础。。。

在VFP中,可以在不同的工作区打开不同的数据表,如下
use xxx1.dbf in 1 && 在工作区1,打开表 xxx2
use xxx2.dbf in 2 && 在工作区2,打开表 xxx2
select 1 &&选择工作区1
brow
select 2 &&选择工作区2
brow
另外还可以这样写,
select a &&选择工作区a,实际上,也是选择1,也就是说,1区=a区,2区=b区
brow
所以,一般情况下,我们都不要用单个字母,如a,b,c,d,等等,做表的名称,如
select * from B inner join A ON A.idnumber = B.idnumber
改为
select * from B1 inner join A1 ON A1.idnumber = B1.idnumber && 但也是错误的查询,正确的如下
select a1.* from B1 inner join A1 ON A1.idnumber = B1.idnumber && 但这样,只显示A1表的字段
2022-02-21 12:24
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:10 
接上:
use xxx1.dbf in 1 && 在工作区1,打开表 xxx2
use xxx2.dbf in 2 && 在工作区2,打开表 xxx2
但,我们,也一般不这样写,我们通常情况下,只记表名,不记工作区,如果是老是指定工作区,有时候,会记错了,会导致混乱
use xxx1.dbf in 0 && 在当前最低可以使用的工作区中打开表 xxx1,如果全面没有表打开,那么,就是1区
use xxx2.dbf in 0 && 在当前最低可以使用的工作区中打开表 xxx2

select xxx1
brow
select xxx2
brow
use xxxaaaaaaaaaaaaaaasssaaaaaaaaaa.dbf alias a1 in 0 && 在当前最低可以使用的工作区中打开表,这么长的表名称是,可以指定表的别名a1,如果不指定,默认是表的名称
select a1 && 指定的别名,正取
brow
select xxxaaaaaaaaaaaaaaasssaaaaaaaaaa && 错误,因为已经指定了新的别名a1


2022-02-21 12:35
chaosirzzz
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-9-13
得分:0 
回复 7楼 mywisdom88
感谢您详细的回答,我明白了,谢谢。
2022-02-21 14:40
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
要是找不重复的数据呢?
2023-04-03 09:32
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:0 
以下是引用y12692189在2023-4-3 09:32:37的发言:

要是找不重复的数据呢?


Create Table 表A (idNumber Char(10))
Insert Into 表A Values ('01')
Insert Into 表A Values ('02')
Insert Into 表A Values ('03')
Insert Into 表A Values ('04')
Insert Into 表A Values ('05')


Create Table 表B (idNumber Char(10))
Insert Into 表B Values ('02')
Insert Into 表B Values ('04')
Insert Into 表B Values ('06')
Insert Into 表B Values ('08')
Go


Select IsNull(a.idNumber, b.IdNumber)
    From 表A a
    Full Join 表B b On a.idNumber = b.IdNumber
    Where a.idNumber Is Null Or b.idNumber Is Null
2023-04-03 20:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508393-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.126796 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved