SQL查询从两个表像运营商

如何才能做到与SQL查询like来自两个不同的表运营商?

我需要的是这样的:

select * from table1 where name like %table2.name

这不是一个普通的领域,但现场的其它表一子。

--------------解决方案-------------

编辑

(原来的答案是进一步下跌)

您的评论(以及随后的编辑)彻底改变的问题。

要做到这一点,您可以使用LIKE作为的一部分ON在连接子句:

CREATE TABLE a (foo varchar(254))
GO

CREATE TABLE b (id int, bar varchar(254))
GO

INSERT INTO a (foo) VALUES ('one')
INSERT INTO a (foo) VALUES ('tone')
INSERT INTO a (foo) VALUES ('phone')
INSERT INTO a (foo) VALUES ('two')
INSERT INTO a (foo) VALUES ('three')

INSERT INTO b (id, bar) VALUES (2, 'ne')
INSERT INTO b (id, bar) VALUES (3, 't')

SELECT a.foo
FROM a
INNER JOIN b ON a.foo LIKE '%' + b.bar
WHERE b.id = 2

(这是SQL Server版本;为MySQL,在各个分号添加,删除GO s,而使用...LIKE concat('%', b.bar)代替。)

使用id = 2找bar =“NE”表b则预先考虑%运营商,并用它来 ​​过滤结果a 。 结果是:

one
tone
phone

你不会做CONCAT,如果你能在运营商存放在b.bar

另外,我很惊讶地发现,这个工程(SQL Server上),以及:

SELECT foo
FROM a
WHERE foo LIKE (
SELECT TOP 1 '%' + bar
FROM b
WHERE id = 2
)

......但使用的版本JOIN可能更灵活。

这应该让你去。

原来的答案

(可以说不再有用)

这很难说,你的要求,但这里使用的例子LIKE来限制从结果JOIN

SELECT a.foo, b.bar
FROM someTable a
INNER JOIN someOtherTable b
ON a.someField = b.someField
WHERE a.foo LIKE 'SOMETHING%'
AND b.bar LIKE '%SOMETHING ELSE'

这会给你foosomeTablebarsomeOtherTable其中的行由相关someFieldfoo开始“东西”和bar与“别的东西”结束。

不是特别肯定的确切的语法,但这里有一个想法:

select ... from (
select ID, Foo as F from FooTable
union all
select ID, Bar as F from BarTable) R
where RF like '%text%'

基于@TJCrowder答案

测试表

create table #A (
id varchar(10)
)

create table #b(
number varchar(5)
)

insert into #A values('123')
insert into #A values('456')
insert into #A values('789')
insert into #A values('0123')
insert into #A values('4567')

select * from #A

insert into #B values('12')
insert into #b values('45')
insert into #b values('987')
insert into #b values('012')
insert into #b values('666')

实际查询

select * from #a, #b
where #a.id like '%' + #b.number + '%'

修改,因为你需要,如上面的查询

select #A.* from #A,#B ...
or
select * from #a, #b
where #a.id like #b.number + '%' -- one side match

分类:SQL 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.013 (s). 10 q(s)