Access模糊查询并过滤某一字段值相同数据的语句

woqulea 2016-09-06 10:10:33
ID name accouterments interest
1 张三 衣服 跑步
2 张三 衣服 乒乓球
3 张三 裤子 乒乓球
4 李四 衣服 足球
5 李四 裤子 乒乓球
6 李四 衣服 乒乓球
7 王五 乒乓鞋子 游泳
8 王五 衣服 乒乓球
9 王五 乒乓鞋子 乒乓球

除了ID字段,所有字段都可进行模糊查询 ,查询结果name字段的值不能有重复。
eg 模糊查询 “衣” 查询显示所有有“衣”字的记录,但是name字段不能重复
想要的查询结果如下
ID name accouterments interest
1 张三 衣服 跑步
4 李四 衣服 足球
8 王五 衣服 乒乓球
不想要的查询结果如下
ID name accouterments interest ×
1 张三 衣服 跑步
2 张三 衣服 乒乓球
4 李四 衣服 足球
5 李四 裤子 乒乓球
8 王五 衣服 乒乓球




...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-09-06
  • 打赏
  • 举报
回复
或用or
select * from tab4 as a where (a.name LIKE '*三*' or a.accouterments LIKE '*三*'or a.interest LIKE '*三*') and not exists(select 1 from tab4 as b where (b.name LIKE '*三*' or b.accouterments LIKE '*三*'or b.interest LIKE '*三*') and b.name=a.name and b.id<a.id) order by a.id
中国风 2016-09-06
  • 打赏
  • 举报
回复
这样用
select * from tab4 as a where a.name+a.accouterments+a.interest LIKE '*三*' and not exists(select 1 from tab4 as b where b.name+ b.accouterments+b.interest LIKE '*三*' and b.name=a.name and b.id<a.id) order by a.id
woqulea 2016-09-06
  • 打赏
  • 举报
回复
模糊字段 三个字段都可查询 你的sql语句只有一个模糊查询条件 我需要的是三个模糊查询字段 ID name accouterments interest 1 张三 衣服 足球四 2 张三 衣服四 篮球 3 张三 裤子李 篮球四 4 李四 衣服 足球五 5 李四 衣服五 篮球 6 李四 裤子王 篮球五 7 王五 衣服 足球三 8 王五 衣服三 篮球 9 王五 裤子张 篮球三 需要多字段模糊查询 不只是accouterments字段 name和interest都可以模糊查询 但查询结果name字段值不能重复 当查询“三”时应出现如下查询结果 1 张三 衣服 足球四 7 王五 衣服 足球三 帮帮忙 看看能不能达到需求 谢谢了
中国风 2016-09-06
  • 打赏
  • 举报
回复
测试结果
select * from tab4 as a where a.accouterments LIKE '*衣*' and not exists(select 1 from tab4 as b where b.accouterments LIKE '*衣*' and b.name=a.name and b.id<a.id) order by a.id

/*
ID	name	accouterments	
1	张三	衣服	
4	李四	衣服	
7	王五	衣服	
*/
woqulea 2016-09-06
  • 打赏
  • 举报
回复
ID name accouterments interest 1 张三 衣服 足球四 2 张三 衣服四 篮球 3 张三 裤子李 篮球四 4 李四 衣服 足球五 5 李四 衣服五 篮球 6 李四 裤子王 篮球五 7 王五 衣服 足球三 8 王五 衣服三 篮球 9 王五 裤子张 篮球三 需要多字段模糊查询 不只是accouterments字段 name和interest都可以模糊查询 但查询结果name字段值不能重复 当查询“三”时应出现如下查询结果 1 张三 衣服 足球四 7 王五 衣服 足球三
中国风 2016-09-06
  • 打赏
  • 举报
回复
SELECT  *
FROM    tab1 AS a
WHERE   accouterments LIKE '*衣*'
        AND NOT EXISTS ( SELECT 1
                         FROM   tab1 AS b
                         WHERE  b.accouterments LIKE '*衣*'
                                AND b.name = a.name
                                AND id < a.id )
woqulea 2016-09-06
  • 打赏
  • 举报
回复
恩恩 谢谢 问题解决了

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧