SQL查询从两个表中
找到两个4字和6个字符值下面是两个表我有工作,与表中的列沿:SQL查询从两个表中
**## Table 1 ##** Grantee Column w/sample data Grantee ---------- CLAT CLATX1 DJSD DJSDX3 ADKS ADKSX5 DKHS
**## Table 2 ##** Inact_ID Column w/sample data Inact_ID ---------- CLAT DJSD ADKS DKHS
用下面的查询:
SELECT DISTINCT A.GRANTEE
FROM TABLE1 A
WHERE
EXISTS(SELECT 1
FROM TABLE2 B
WHERE A.GRANTEE= B.INACT_ID);
These are my results: CLAT DJSD ADKS DKHS
4字ID的回来了 - 不是我想要的一切(也希望6个字符的ID与4个字符的ID相关联)
除了获得那些4个字符的ID之外,这些4个字符ID中的一些还具有另一个ID,其具有以下命名约定 - A02WXn,其中X是常数,并且n是从0-9的数字,其是6个字符的ID。我希望能够包含6个字符的ID,如果它与4个字符的ID一起存在。 6个字符的ID只存在于表1中。
更新:我想我可能更接近解决方案,希望这可以澄清更多我想要的结果。
SELECT A.GRANTEE FROM TABLE1 A INNER JOIN (SELECT B.INACT_ID FROM INACTIVE_USERS B) ON A.GRANTEE LIKE '%' || B.INACT_ID || '%';
(Note - This was done on Postgres, and worked, but I can't get it to run in DB2) Results from Postgres Below:(Desired Results - Both 4 character ID and 6 Character ID if exists) GRANTEE -------- CLAT CLATX1 DJSD DJSDX3 ADKS ADKSX5 DKHS
试试下面的SQL:
SELECT DISTINCT A.GRANTEE
FROM TABLE1 A
WHERE
EXISTS(SELECT 1
FROM TABLE2 B
WHERE substring(A.GRANTEE,1,4)= B.INACT_ID);
我想同样的事情在Sybase数据库。它工作得很好!
create table #temp1
(
GRANTEE varchar(125)
)
insert into #temp1 values('A02W')
insert into #temp1 values('A02WX2')
insert into #temp1 values('DBDS')
insert into #temp1 values('DBDSX4')
insert into #temp1 values('A03')
insert into #temp1 values('ASKDLAKDJD')
create table #temp2
(
INACT_ID varchar(4)
)
insert into #temp2 values('A02W')
insert into #temp2 values('AAAB')
insert into #temp2 values('AVCD')
insert into #temp2 values('SSLD')
select * from #temp1
select * from #temp2
SELECT DISTINCT A.GRANTEE
FROM #temp1 A
WHERE
EXISTS(SELECT 1
FROM #temp2 B
WHERE substring(A.GRANTEE,1,4) = B.INACT_ID);
如果我使用Substr(A.GRANTEE,1,4)= B.INACT_ID子句,那么返回的行不仅仅是我之后的4个和6个字符。 我改写并添加了一些更新到我原来的帖子,如果这有助于澄清。 对不起,有任何混淆。我感谢你的投入! – SkiDoo1222 2014-12-05 22:26:58
谢谢!如果解决了这个问题,请将其标记为答案。 – 2014-12-05 22:33:52
您提供的查询不适用于我尝试检索的内容。 – SkiDoo1222 2014-12-05 22:45:00
怎么样'... WHERE LEFT(A.GRANTEE,4)= B.INACT_ID'? – mustaccio 2014-12-05 18:08:56
Artjom B. - 感谢您的编辑。 mustaccio - 我很欣赏这个回应!当我编辑我的WHERE CLAUSE以符合您的要求时,我会得到不正确的结果。我得到的ROWS不只是4或6个字符。我只想要4个字符的ID和相关的6个字符ID(如果存在)。 谢谢 – SkiDoo1222 2014-12-05 18:40:09
然后你需要提供更有意义的样本数据,包括特例。我的建议可以与你现有的样本完美配合。 – mustaccio 2014-12-05 20:06:21