SQL怎么查询出字段中等于某一个数字的记录? Posted 2023-05-15
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL怎么查询出字段中等于某一个数字的记录?相关的知识,希望对你有一定的参考价值。
例如数据表: id value 1 1,3,45,7,9 2 2,4,6,8,10 3 6,2,8,1,24 4 2,19,8,7,4,6 5 23,14,25,5,17 6 31,55,59,5,4 -------------------------------- -- 表的结构 `test` CREATE TABLE IF NOT EXISTS `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `value` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; -- 转存表中的数据 `test` INSERT INTO `test` (`id`, `value`) VALUES (1, '1,3,45,7,9'), (2, '2,4,6,8,10'), (3, '6,2,8,1,24'), (4, '2,19,8,7,4,6'), (5, '23,14,25,5,17'), (6, '31,55,59,5,4'); ------------------------------------------------ 我想select出 value中含有的数字等于4的所有记录(当然不等于45,24,14这些的,得出结果是第2、4、6条)。sql语句怎么写?
SELECT [value] FROM [test] where INSTR( [value], ',4,' )>0 你这张表中最好不要使用关键字作为表的字段名字比如valuemysql 中INSTR函数的用法 INSTR(字段名, 字符串) 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始)
参考技术A
select * from test where value like '%,4' or value like '%,4,%' or value like '4,%'; 这样??? 分4在字段前,中,后三种???用regexp更好?
参考技术B
select * from test where id = 4 or value = 4; 应该是这样吧?追问 比如第6条: value=”31,55,59,5,4“,含有5个数字分别是31,55,59,5,4。其中有一个数字等于4。 你value = 4。难道要”31,55,59,5,4“=4?
追答 嗯,听你这么一说我的又好像不对了 怎么创建表有语法错误
SQL某一表中重复某一字段重复记录查询与处理
1.查询出重复记录 select 重复记录字段 form 数据表 group by 重复记录字段 having count(重复记录字段)>1
2.重复记录只显示一条ID值最小或最大的记录
select id,* from 数据表 where houseno (select 重复记录字段 form 数据表 group by 重复记录
字段 having count(重复记录字段)>1 )
这样把houseno重复的的ID值全部显示出,那么我们如何只显示一条id最小或最大的记录呢?
关键是在上面sql的where子句中select 重复记录字段 form 数据表 group by 重复记录字段 having count(
重复记录字段)>1 修改为 select min(id) form 数据表 group by 重复记录字段 having count(重复记录字段)>1
这样就查询重复记录字段中ID最小值
那么上面的语句就是
select id,* from 数据表 where houseno (select min(id) form 数据表 group by 重复记录字段
having count(重复记录字段)>1 )
3.至于对重复记录执行delete update 就非常简单啦
例如只保留最小id的一条 delete 数据表 where id in (select max(id ) from 数据包 group by 重复记录字段 having count(重
复记录字段)>1) update 操作不说啦都一样。
4.group by 字段 having count与distinct的区别
distct查询显示全部字段值都是一样的唯一,一条记录
例如 id name sex 43 111 1 44 111 1 45 111 2 46 222 2 47 222 2 48 333 1 49 333 1
SELECT distinct [name] ,[sex] FROM [database].[dbo].[a]
要想实现上面的要去掉 sex字段 改成
SELECT distinct [name] FROM [database].[dbo].[a]
但要想取得重复ID最小值不建议用distinct。 总结:
对于重复记录关键是查出 :采用group by 字段 having count(字段)>1 取得最小id的一条(很关键) :采用min(id)
以上是关于SQL怎么查询出字段中等于某一个数字的记录?的主要内容,如果未能解决你的问题,请参考以下文章
SQL语句查询:查询满足第1个字段等于某值且第2个字段大于某值的所有记录中,统计第3个字段的平均值。
mysql如何查询某字段里两个值相加结果等于已知道的一个数字
SQL中如何精确判断某字段含有某个值?
mysql 查询某一字段值不等于某个字符串的记录
如何用sql查询某值类型字段各个记录中含有的特定数字?
sql语句包含怎么写