我想在 INNER 或 LEFT 连接中使用通配符 ,咋办?

shiguangxin 2017-06-07 10:59:23
举个栗子:
select * from T1 INNER JOIN T2 ON T1.PCODE=T2.CODE
其中 T1.PCODE='%' 代表可以对应 T2 中的任何记录 啊啊

我的问题是:
能实现不?用啥方法可以实现?


...全文
223 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2017-06-07
  • 打赏
  • 举报
回复
e.g.
use Tempdb
go
--> --> 中国风(Roy)生成測試數據
 
if not object_id(N'Tempdb..#TB1') is null
	drop table #TB1
Go
Create table #TB1([ID] int,[Name] nvarchar(22),[Com] nvarchar(23),[Dep] nvarchar(23),[RID] int)
Insert #TB1
select 1,N'张三',N'101',N'001',10 union all
select 2,N'李四',N'101',N'%',11 union all
select 3,N'王二',N'%',N'%',11 union all
select 4,N'木头',N'102',N'001',10 union all
select 5,N'木头',N'101',N'001',10
Go
--> --> 中国风(Roy)生成測試數據
 
if not object_id(N'Tempdb..#TB2') is null
	drop table #TB2
Go
Create table #TB2([Com] NVARCHAR(10),[Dep] nvarchar(23),[name] nvarchar(24))
Insert #TB2
select 101,N'001',N'连锁1店' union all
select 101,N'002',N'连锁2店' union all
select 102,N'001',N'自营1店' union all
select 102,N'002',N'自营2店'
Go
SELECT  *
FROM    #TB1 AS a
        INNER JOIN #TB2 AS b ON  b.Com LIKE a.Com
                                AND   b.[Dep] LIKE a.[Dep]
WHERE a.name='李四' ;
/*
ID	Name	Com	Dep	RID	Com	Dep	name
2	李四	101	%	11	101	001	连锁1店
2	李四	101	%	11	101	002	连锁2店
*/

zbdzjx 2017-06-07
  • 打赏
  • 举报
回复
with t1 as
(
select '1' id, 'a' xh union all
select '2' id, 'b' xh union all
select '3' id, 'c' xh union all
select '%' id, 'd' xh
)
, t2 as
(
select '1' id, 'aa' ms union all
select '2' id, 'bb' ms union all
select '3' id, 'cc' ms union all
select '4' id, 'dd' ms
)
select * from t1 inner join t2 on t2.id like t1.id
shiguangxin 2017-06-07
  • 打赏
  • 举报
回复
举个栗子: 表一 : TB1 ID Name Com Dep RID 1 张三 101 001 10 2 李四 101 % 11 3 王二 % % 11 4 木头 102 001 10 5 木头 101 001 10 表二 : TB2 Com Dep name 101 001 连锁1店 101 002 连锁2店 102 001 自营1店 102 002 自营2店 select T2.* from T1 INNER JOIN T2 ON T1. Com=T2. Com and T1.Dep=T2.Dep where T1.name='王二 ' 要返回 101 001 连锁1店 101 002 连锁2店 102 001 自营1店 102 002 自营2店 select T2.* from T1 INNER JOIN T2 ON T1. Com=T2. Com and T1.Dep=T2.Dep where T1.name='李四 ' 要返回 101 001 连锁1店 101 002 连锁2店
中国风 2017-06-07
  • 打赏
  • 举报
回复
T1.PCODE='%' 匹配用 T1.PCODE LIKE '%'
二月十六 版主 2017-06-07
  • 打赏
  • 举报
回复
可以啊,如果非得用join这种形式,那就在on后随便写个true的表达式。也可以不用join实现这种效果:

--借水果版主数据
create table a(aid int, aname varchar(10))
create table b(bid int, bname varchar(10))
go
insert into a values(1,'xx'),(2,'yy'),(3,'zz')
insert into b values(111,'AAA'),(222,'BBB'),(333,'CCC')
go
--SELECT * from a inner join b on a.aid = a.aid
SELECT * from a ,b
drop table a,b
go


卖水果的net 版主 2017-06-07
  • 打赏
  • 举报
回复

create table a(aid int, aname varchar(10))
create table b(bid int, bname varchar(10))
go
insert into a values(1,'xx'),(2,'yy'),(3,'zz')
insert into b values(111,'AAA'),(222,'BBB'),(333,'CCC')
go
select * from a inner join b on a.aid = a.aid
go
drop table a,b
go


aid         aname      bid         bname
----------- ---------- ----------- ----------
1           xx         111         AAA
1           xx         222         BBB
1           xx         333         CCC
2           yy         111         AAA
2           yy         222         BBB
2           yy         333         CCC
3           zz         111         AAA
3           zz         222         BBB
3           zz         333         CCC

(9 行受影响)


shiguangxin 2017-06-07
  • 打赏
  • 举报
回复


发现有重复的数据 啊啊 加上 group by
shiguangxin 2017-06-07
  • 打赏
  • 举报
回复
从表结构上可以看出,这是用来保存用户在每个部门的授权数据的。 数据量不会很大,应该万八千条数据也就到头了 请问 jinfengyiye : 性能不会影响很大吧? 要是对性能影响很大的话,那这个懒还真就不能偷
gw6328 2017-06-07
  • 打赏
  • 举报
回复
on上是可以用,但是性能不好。而且基本上这种需求也不太会有吧。你还会join这种条件吗?你缕一缕看是不是哪里搞错了。
shiguangxin 2017-06-07
  • 打赏
  • 举报
回复







shiguangxin 2017-06-07
  • 打赏
  • 举报
回复
看看 版主的 “ e.g.“ 再看看俺的 “举个栗子“ 看来 知乎 、 天涯 这种地方还是少去,多看看书才是正道 啊啊
shiguangxin 2017-06-07
  • 打赏
  • 举报
回复
太好了 居然真的可以实现, 不用写程序 爽 谢谢 roy_88 和 楼上的各位朋友 对了 对了 这样的写法 效率咋样?
bluetata 2017-06-07
  • 打赏
  • 举报
回复
最简单的ON关联条件用like
select * T1 A inner join T2 B ON  A.Com LIKE B.Com AND  A.Dept LIKE B.Dept where A.name='XXXXXX'
我不知道你业务数据说明样,不过最好用charindex

34,587

社区成员

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

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