㈠ sql 去除重复记录,多字段匹配
--若id为int数据类型,统计规则是去重,取其最小的id
selectmin(id),a,b,c,dfromtable_namegroupbya,b,c,d
--方法二:请修改table_name表名称
select*fromtable_namewhereidnotin
(
selecta.id
fromtable_nameainnerjoin(selecta,b,c,dfromtable_namegroupbya,b,c,dhavingcount(*)>1)b
ona.a=b.aanda.b=b.banda.c=b.canda.d=b.d;
)
㈡ sql 匹配相似记录
不知道你的相似度判断的规则是什么,通过数据库实现的话,可以考虑定义一个相似度比较函数,然后在update时调用并判断,下面是MSSQL的思路,不过需要把相似度判断的函数写完整。
其他数据库应该也可以用相同思路来做吧。
FUNCTION fn_GetSimilar
(
@strA As Varchar(255), --传入的待比较的字符
@StrB As Varchar(255 --期望字符
)
RETURNS int
AS
BEGIN
DECLARE @Result int;
if @strA= @StrB
begin
set @Result=100
end
----
--相似度判断条件及判断方法赋值
----
RETURN @Result
END
如果函数测试没问题,就可以调用下面的方法来修改了
update 不规则名称表 set StdMedName=b.CommonName from 标准名称表 b
where dbo.fn_GetSimilar( 不规则名称表.IrrMedName,b.CommonName)>相似度的值
㈢ sql查询两个表相同的数据
SQL语句如下:
SELECT * from TABLE1
full join TABLE2 on TABLE1.xingming = TABLE2.xingming
where
TABLE1.xingming is null or TABLE2.xingming is null
分析:
1、首先得出两个表的并集
从结果中可以看出,表1中的赵二在表2中没有相同xingming的记录。
表2中的刘六在表1中没有相同xingming的记录。
本题还有其它多种解法,此处列出比较好理解的一种。
(3)sql不同列的相同内容匹配扩展阅读:
使用自联接
即使表在数据库中没有自反关系,也可将它与自身联接。 例如,可使用自联接查找生活在同一城市的作者对。
与任何联接一样,自联接至少需要两个表。 不同之处在于,不是向查询中添加第二个表,而是添加同一个表的第二个实例。 这样,可将表的第一个实例中的列与第二个实例中的同一列相比较,这样可相互比较列中的值。查询和视图设计器为表的第二个实例分配一个别名。
例如,如果要创建自联接来查找居住在 Berkeley 内的所有作者对,可将表的第一个实例中的 city 列与第二个实例中的 city 列相比较。 所得到的查询可能类似于:
SELECT
authors.au_fname, authors.au_lname, authors1.au_fname AS Expr2, authors1.au_lname AS Expr3
FROM authors INNER JOIN authors authors1 ON authors.city = authors1.city
WHERE
authors.city = 'Berkeley'
参考资料:
网络.full join
㈣ sql语句自动匹配两个表两个字段内容相似的记录
如果是SQLServer的话可以试试这方法
1.LEFT截取左边第几个,RIGHT同理
->
where
A1
LIKE
'%'+LEFT(B1,2)+'%'
2.substring截取从第几个开始数的多少个->where
A1
LIKE
'%'+SUBSTRING(B1,1,2)+'%'
其他的数据库我就不懂了,不过oracle好像是substr函数
㈤ SQL中,怎样让同一个表中不同列匹配然后输出不同值行
匹配是什么意思?两列的值相等?
select * from count where ysje<>sshje
㈥ sql语句如何查询一个表中某一列的相同数据
假设表名是num,列名是a,则查询语句为:
SELECT * FROM num WHERE a IN(
SELECT a FROM num GROUP BY a HAVING COUNT(a)>1
)
其中:
SELECT 语句:SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。
WHERE 子句:如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
GROUP BY 语句:GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
HAVING 子句:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
COUNT() 函数:返回匹配指定条件的行数。
(6)sql不同列的相同内容匹配扩展阅读:
sql语言特点:
1、一体化:SQL集数据定义DDL、数据操纵DML和数据控制DCL于一体,可以完成数据库中的全部工作。
2、使用方式灵活:它具有两种使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主语言中使用。
3、非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”。
4、语言简洁,语法简单,好学好用:在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语。
㈦ sql查找某一字段相同的所有数据
1、在我们的电脑上打开数据库,这里新建一张含有重复数据的user表做示例。
㈧ 用SQL查询两个表中相同的数据
1、创建测试表;
create table test_col_1(id number, var varchar2(200));
create table test_col_2(id number, var varchar2(200));
㈨ sql实现两列数据的匹配
设表名为TABLENAME,列1为COL1,列2为COL2则这样求出所有第一列在第二列中存在的记录:
SELECT * FROM TABLENAME A WHERE COL1 IN(SELECT COL2 FROM TABLENAME)
===============================
SELECT * FROM TABLENAME A
WHERE EXISTS(SELECT 1 FROM TABLENAME B WHERE B.COL2 LIKE '%'+A.COL1+'%')
=========================
SELECT DISTINCT A.* FROM TABLENAME A,TABLENAME B WHERE B.COL2 LIKE '%'+A.COL1+'%'
㈩ sql语句如何查询一个表中某两个字段的相同数据
查询一个表中某两个字段的相同数据代码是:Select Name,ID From A group by Name,ID having count (*)>1。
结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;
sql 语句就是对数据库进行操作的一种语言。
sql="select * from 数据表 where字段名=字段值 order by字段名[desc]"(按某个字段值降序排列,默认升序ASC);
sql="select * from 数据表 where字段名like '%字段值%' order by 字段名 [desc]";
sql="select top 10 * from 数据表 where字段名=字段值 order by 字段名 [desc]";
sql="select top 10 * from 数据表 order by 字段名 [desc]";
sql="select * from 数据表 where字段名in ('值1','值2','值3')";
sql="select * from 数据表 where字段名between 值1 and 值2"。
sql语句:
更新:update table1 set field1=value1 where 范围;
查找:select * from table1 where field1 like '%value1%' (所有包含'value1'这个模式的字符串);
排序:select * from table1 order by field1,field2 [desc];
求和:select sum(field1) as sumvalue from table1;
平均:select avg(field1) as avgvalue from table1;
最大:select max(field1) as maxvalue from table1;
最小:select min(field1) as minvalue from table1[separator]。