SQL 其中术语等于或类似(两个表)
SQL where term is equals or like (two tables)
对于 MySQL,我需要找到所有记录,其中一个列类似于一个术语,或者该术语等于一个列,但在另一个 table.
中
例如:
select *
from table_a TA,
table_b TB
where TB.number = '1447'
or TA.subject like '%1447%'
实际上,我正在搜索一个值,它可以在 TB.number 或 TA.subject 上。上面的 SQL 返回了多条记录,它与搜索不匹配。
您正在计算两个表的叉积。您需要使用一些 JOIN 条件来限制结果的数量。
在此处阅读更多相关信息:
http://www.w3schools.com/sql/sql_join.asp
是的,您需要在 table 中的 JOIN
中对
这样的公共列进行操作
select *
from table_a TA
join table_b TB
on TA.id = TB.id
where TB.number = '1447'
or TA.subject like '%1447%'
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%'
似乎这两个 table 或多或少没有关联。做一个 UNION ALL
而不是 JOIN
:
select * from table_a TA where TA.subject like '%1447%'
UNION ALL
select * from table_b TB where TB.number = '1447'
对于 MySQL,我需要找到所有记录,其中一个列类似于一个术语,或者该术语等于一个列,但在另一个 table.
中例如:
select *
from table_a TA,
table_b TB
where TB.number = '1447'
or TA.subject like '%1447%'
实际上,我正在搜索一个值,它可以在 TB.number 或 TA.subject 上。上面的 SQL 返回了多条记录,它与搜索不匹配。
您正在计算两个表的叉积。您需要使用一些 JOIN 条件来限制结果的数量。
在此处阅读更多相关信息: http://www.w3schools.com/sql/sql_join.asp
是的,您需要在 table 中的 JOIN
中对
select *
from table_a TA
join table_b TB
on TA.id = TB.id
where TB.number = '1447'
or TA.subject like '%1447%'
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%'
似乎这两个 table 或多或少没有关联。做一个 UNION ALL
而不是 JOIN
:
select * from table_a TA where TA.subject like '%1447%'
UNION ALL
select * from table_b TB where TB.number = '1447'