我需要找到第二个表中与第一个表行(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 1
和4
(BB),但不是2
和3
。
在这种情况下是否有通配符或其他方法?
答案 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来解决。