术语等于或等的SQL(两个表)

时间:2016-11-28 11:56:06

标签: mysql sql join inner-join where

使用MySQL,我需要找到所有记录,其中列就像一个术语,或者术语等于列,但在另一个表中。

例如:

select *
from table_a TA,
     table_b TB
where TB.number = '1447'
   or TA.subject like '%1447%'

实际上,我正在搜索一个值,它可以在TB.number或TA.subject上。上面的SQL返回多条记录,但与搜索不匹配。

4 个答案:

答案 0 :(得分:3)

你正在做两个表的交叉产品。您需要使用某些JOIN条件来限制结果数量。

在此处阅读更多内容: http://www.w3schools.com/sql/sql_join.asp

答案 1 :(得分:1)

是的,你需要在像

这样的公共列的表格中做JOIN
select * 
from table_a TA
join table_b TB 
on TA.id = TB.id
where TB.number = '1447' 
or TA.subject like '%1447%'

答案 2 :(得分:0)

select * from table_a TA, table_b TB where TB.number = '1447'  
UNION ALL 
select * from table_a TA, table_b TB where TA.subject like '%1447%'

答案 3 :(得分:0)

似乎这两个表或多或少都无关。做一个UNION ALL而不是JOIN

select * from table_a TA where TA.subject like '%1447%'
UNION ALL 
select * from table_b TB where TB.number = '1447'