SQL中如何根据字段名查找该字段名存在于数据库的哪些表中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中如何根据字段名查找该字段名存在于数据库的哪些表中?相关的知识,希望对你有一定的参考价值。

上处的字段名是指的表中的列名 还是指的 列中某一个 值。
如果是指的列名的话,很简单
select sysobjects.name as tablename,syscolumns.name as columnname
from syscolumns join sysobjects on sysobjects.id = syscolumns.id
where syscolumns.name like '%此处为列名%'

如果是指的一个值的话,要遍历数据库了。如下:
declare@str varchar(100)
set@str='张三'--要搜索的字符串
declare@s varchar(8000)
declaretb cursorlocalfor
selects='if exists(select 1 from ['+b.name+'] where convert(varchar,['+a.name+']) like ''%'+@str+'%'')
print ''select ['+a.name+'] from ['+b.name+']'''
fromsyscolumns a joinsysobjects b ona.id=b.id
whereb.xtype='U'anda.status>=0
--所查列的字段类型
anda.xusertype in(175,239,231,167,56,60,108,106)
opentb
fetchnextfromtb into@s
while @@fetch_status=0
begin
exec(@s)
fetchnextfromtb into@s
end
closetb
deallocatetb
参考技术A 这个要结合两个表来进行查找一个是sysobjects一个是syscolumns。他们有个共同的字段是id来进行联系。查询的代码如下:
select
*
from
sysobjects
s
where
type='u'
and
id
in(select
id
from
syscolumns
s
where
s.name='待查找字段名')

MySql根据字段名查询重复记录并删除!只保留一条

最近在处理业务数据的时候!在几W条记录里存在着些相同的记录,如何用SQL语句,删除掉重复的呢?

可以用以下方法进行处理

其实很简单!就是查找表中多余的重复记录,重复记录是根据单个字段来查询、然后删除其他重复的记录即可

查询重复记录

SELECT  id ,title from  topic GROUP BY title HAVING count(*) > 1;

这样查出来的结果比较乱

查询全部的重复记录并分组

​​​​SELECT
	* 
FROM
	topic 
WHERE
	title IN ( SELECT title FROM topic GROUP BY  title HAVING Count(*)> 1 ) 
	AND title IN (
	SELECT
		title 
	FROM
		topic 
	GROUP BY
		title
HAVING
	count(*)> 1) ORDER BY title

对查询结果进行分组根据需要的字段 

查询除第一条外的多余数据

SELECT
	*
FROM
	topic
WHERE
	id NOT IN (
		SELECT
			dt.minId
		FROM
			(
				SELECT
					MIN(id) AS minId
				FROM
					topic
				GROUP BY
				title
			) dt
	)
ORDER BY
	title

删除第一条外的多余数据

DELETE
FROM
	topic
WHERE
	id NOT IN (
		SELECT
			dt.minId
		FROM
			(
				SELECT
					MIN(id) AS minId
				FROM
					topic
				GROUP BY
					title
			) dt
	)
ORDER BY
	title

以上是关于SQL中如何根据字段名查找该字段名存在于数据库的哪些表中?的主要内容,如果未能解决你的问题,请参考以下文章

oracle中如何根据一个字段名查找出所属的表名

MySql根据字段名查询重复记录并删除!只保留一条

sql查询表中字段名和数据

sql语句怎么在一个数据库中查找拥有同一字段名的所有表

sql语句怎么在一个数据库中查找拥有同一字段名的所有表?

SQL查询根据值和字段名从两个表中获取计数