【问题标题】:SQL where term is equals or like (two tables) [duplicate]SQL where term is equal or like(两个表)[重复]
【发布时间】:2017-04-12 03:22:45
【问题描述】:

使用 MySQL,我需要查找列类似于术语或术语等于列但在另一个表中的所有记录。

例如:

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

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

【问题讨论】:

  • table_atable_b 之间的公共列是什么?

标签: mysql sql join inner-join where


【解决方案1】:

您正在做两个表的叉积。您需要使用一些 JOIN 标准来限制结果的数量。

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

【讨论】:

    【解决方案2】:

    是的,您需要在表格中的公共列中添加JOIN,例如

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

    【讨论】:

      【解决方案3】:
      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%'
      

      【讨论】:

        【解决方案4】:

        似乎这两个表或多或少无关。使用UNION ALL 而不是JOIN

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

        【讨论】:

          猜你喜欢
          • 2017-08-30
          • 2017-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-26
          • 2017-06-04
          • 2011-04-12
          • 2014-09-28
          相关资源
          最近更新 更多