SQL where term is equals or like (two tables) SQL where term is equals or like (两个表)

10 浏览
0 Comments

SQL where term is equals or like (two tables) SQL where term is equals or like (两个表)

使用MySQL,我需要找到所有满足以下条件的记录:一个列类似于一个术语,或者该术语等于另一个表中的列。

例如:

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

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

0
0 Comments

问题出现的原因是需要在两个表中进行条件筛选,要求一个是精确匹配(equals),另一个是模糊匹配(like)。

解决方法是使用SQL的UNION ALL操作符将两个查询结果合并起来,分别在两个查询中使用不同的条件筛选。

具体实现如下:

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%'

以上代码中,第一个查询使用条件TB.number = '1447'来精确匹配表table_b中的number字段;第二个查询使用条件TA.subject like '%1447%'来模糊匹配表table_a中的subject字段。最后使用UNION ALL操作符将两个查询结果合并起来。

通过这种方式,可以同时满足精确匹配和模糊匹配的需求。

0
0 Comments

问题的原因是需要在两个表之间进行关联查询,根据一个公共列进行连接。解决方法是使用JOIN语句来连接两个表,并使用ON子句指定连接条件。在WHERE子句中使用=运算符来比较两个表中的列的值是否相等,或者使用LIKE运算符来判断一个表中的列的值是否包含指定的字符串。下面是一个示例的SQL查询语句:

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

以上是根据给定的问题描述整理出的文章内容。

0
0 Comments

在SQL中,当我们对两个表进行操作时,有时我们需要使用JOIN条件来限制结果的数量。如果没有使用JOIN条件,将会导致两个表进行交叉连接(cross product),从而产生大量的结果,使得查询变得非常耗时和低效。

要解决这个问题,我们可以使用WHERE子句来添加JOIN条件,以限制结果的数量。在WHERE子句中,我们可以使用等号(=)或者LIKE运算符来进行条件判断。

例如,假设我们有两个表table1和table2,我们希望根据某个字段的值来连接这两个表,并只返回符合条件的结果。我们可以使用以下SQL查询语句来实现:

SELECT * 
FROM table1 
JOIN table2 
ON table1.column_name = table2.column_name
WHERE table1.column_name = 'some_value';

上述查询语句中,我们使用了JOIN关键字来连接两个表,并使用ON子句指定了连接的条件。然后,在WHERE子句中,我们使用等号来判断表table1中某个字段的值是否等于某个特定值'some_value',从而限制结果的数量。

通过添加JOIN条件和使用WHERE子句,我们可以更有效地查询两个表之间的数据,避免产生不必要的结果,提高查询的性能和效率。

更多关于SQL JOIN的内容可以参考http://www.w3schools.com/sql/sql_join.asp

0