使用通配符从另一个表中查找ID

时间:2015-08-03 11:26:43

标签: sql

我需要找到第二个表中与第一个表行(publications)中的值对应的所有ID。

表格是这样的:

Customers:                           Publications:
ID   name         publications       ID    pub_short
------------------------------       ---------------
1    ABC Motors   2                  1     AA
2    Ecco         1|3|2              2     BB
3    Third        3|2|4              3     CC
4    Fourth       2|4                4     DD
5    Fifth        3|4                5     EE
...                                  ...

我试过这个:

SELECT DISTINCT Customers.*
FROM Customers
WHERE '%'+publications+'%' IN 
  (SELECT ID FROM Publications WHERE pub_short LIKE 'b%')
ORDER BY `Customers`.`name` ASC

它为我提供了ID 14(BB),但不是23

在这种情况下是否有通配符或其他方法?

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT 
DISTINCT c.*
FROM Customers c
join Publications p
ON INSTR(c.publications, p.ID) > 0
WHERE p.pub_short LIKE 'b%'
ORDER BY `c`.`name` ASC

答案 1 :(得分:0)

我得到了它的工作:

select c.*
  from customers c,
       publications p
 where p.pub_short like 'B%'
   and publications like '%'||p.id||'%';

请注意,我在Oracle SQL上对此进行了测试,并且它区分大小写,因此' b%'您的行已更改为' B%'。 没什么大不了的,可以通过UPPER p.pub_short来解决。