从数据库中查找数据库是否有某表,从数据库中查找数据库是否有某一个表

2021-01-17 20:52:40 字数 3187 阅读 9775

1楼:匿名用户

select*fromtabswheretable_name='aaa'

如果查询结果不是空的,就说明存在这个表

然后aaa处是表名,必须要大写

sql中,如何查询存在一个表而不在另一个表中的数据记录 20

2楼:匿名用户

首先,在sql中(以sql server为例),查询存在一个表而不在另一个表中的数据记录的方法有很多,介绍其中4种:

1、方法一(仅适用单个字段):使用 not in ,比较容易理解,缺点是效率低

如:select a.id from a where a.id not in (select id from b);

2、方法二(适用多个字段匹配):使用 left join...on... , "b.id isnull" 表示左连接之后在b.id 字段为 null的记录。

如:select a.id from a left join b on a.id=b.id where b.id is null ;

3、方法三(适用多个字段匹配)

如:select * from b where (select count(1) as num from a where a.id = b.id) = 0;

4、方法四(适用多个字段匹配)

如:select * from a where not exists(select 1 from b where a.id=b.id)

接着,我们来分析你的sql语句为什么返回数据不准确的原因。

从你的sql基础语句来看,你使用了方法一和方法四这两种,两种语法本身都是正确的,但是却没有达到预期的效果,初步分析,问题可能出在gsdj和swdj这两张表的qymc字段的判断比较上。

举个例子:'企业名称'和'企业名称 '这两个字符串看似相同,实际却并不相同,因为第二个“企业名称 ”的后面跟了一个空格字符。就因为这个空格字符导致这个"'企业名称'='企业名称 '"等式不成立。

考虑到你qymc这个字段的类型是字符型,建议你在原有sql基础上做一个微调如下:

select * from gsdj gs where not exists (select * from swdj sw where rtrim(ltrim(sw.qymc)))=rtrim(ltrim(gs.qymc)));

其中ltrim()可以去除左侧空格,rtrim()可以去除右侧的空格,也就是说我们是对去除空格后的企业名称进行比较,排除了空格的干扰。

扩展资料:

在sql中,对于字符型文本数据,经常需要用到去空格的操作,对oracle数据来说可以通过trim()函数来简单实现,而sql server中并没有trim()函数,只有ltrim()和rtrim()两个函数。

sql 中使用ltrim()去除左边空格,rtrim()去除右边空格,没有同时去除左右空格的函数,要去除所有空格可以用replace(字符串,' ',''),将字符串里的空格替换为空。

例:去除空格函数

declare @temp char(50)

set @temp = ' hello sql '

print ltrim(@temp) --去除左边空格

print rtrim(@temp) --去除右边空格

print replace(@temp,' ','')--去除字符串里所有空格

print @temp

>> 输出结果

hello sql

hello sql

hellosql

hello sql

3楼:妗妗歘歘

我有两张表如何查询在一个表姑在另一个表中的数据

4楼:烟染暖阳

select * from swdj where qymc not in (select qymc from gsdj)

5楼:匿名用户

select * from gsdj t1 where not exists (select * from swdj where qymc=t1.qymc )

6楼:匿名用户

select * from gsdj gsdj where gsdj.qymc not in (select swdj.qymc from swdj swdj) 或者

select * from gsdj gs where not exists (select * from swdj sw where sw.qymc=gs.qymc )

试试加上表别名

7楼:丶我是周周

select * from gsdj where gsdj.qymc =swdj.qymc and gsdj.

qymc not in (select swdj.qymc from swdj )这两个表之间必须要有一个相连接的列

8楼:匿名用户

select * from gsdj where not exists (select * from swdj where gsdj.qymc=swdj.qymc)

9楼:锁映僪鹤骞

只需判断一下即可,根据你的题目意思应该是a表的id和b表的id相关联。

select *, case when (select count(*) from b where id = a.id)>0 then 1 else 0 end as flag from a如果你是想a表和b表的字段和id这两列都一样,才将flag显示为1的话,用下面的查询:

select *, case when (select count(*) from b where id = a.id and 字段 = a.字段)>0 then 1 else 0 end as flag from a

sql 数据库,一个表中的数据 在另一个表中查找,如果没有则显示结果

10楼:匿名用户

select * from 表1 where 字段抄 not in (select 字段袭 from 表bai2)若是还要考虑du到表二zhi有,而表一没有的dao的情况select * from 表1,表2 where 字段 not in (select 字段 from 表1 inner join 表2 on 表1.字段=表2.字段)

如何判断数据库中是否存在某个数据

1楼 匿名用户 判断方法如下 一 select 字段 列表 from 数据表 例 1 select id g c add tel from haf 表示数据表中所有字段 2 select 单价 数量 单价 数量 as 合计金额 from haf as 设置字段的别名 二 select from wh...

关系数据库中,关系代表A、数据表B、查询

1楼 匿名用户 习题答案及解析 第6章6 1 1 1 单项选择题 1 c 2 b 3 a 4 d 5 a 6 d 7 a 8 d 9 a 2 多项选择题 1 abcd 2 abcde 3 填空题 关系数据库sql语言? 2楼 匿名用户 先d d 然后group by a b 然后having avg...

在sql数据库中怎么判断某张表是否已经存在了

1楼 真奇怪 直接运行 select from 表的名字 如果存在的话就有数据,如果不村子直接会报错的 在sql数据库中怎么判断某张表是否已经存在了 2楼 海影幻 直接查询表数据 select from table1 如果不存在table1就会报错 3楼 微6信 if exists select f...