SQL查询以联接具有不同值的表
我遇到了一种情况,我需要根据具有不同值的列连接两个表 例如 表1有T1列 表2有第T2列 T1有100行,值为p 及 T2有50行值为N,50行值为P 我想将值为p的表1与值为N和p的表2连接起来 它应该给我总共100条记录。试试这个:SQL查询以联接具有不同值的表,sql,Sql,我遇到了一种情况,我需要根据具有不同值的列连接两个表 例如 表1有T1列 表2有第T2列 T1有100行,值为p 及 T2有50行值为N,50行值为P 我想将值为p的表1与值为N和p的表2连接起来 它应该给我总共100条记录。试试这个: SELECT t1.t1, t2.t2 FROM Table1 t1 INNER JOIN Table2 t2 ON t2.t2 IN('N', 'P') WHERE T1.t1 = 'p'; “N”、“p”中的谓词将从表2中获得t2的值,该值具有
SELECT
t1.t1,
t2.t2
FROM Table1 t1
INNER JOIN Table2 t2 ON t2.t2 IN('N', 'P')
WHERE T1.t1 = 'p';
“N”、“p”中的谓词将从表2中获得t2的值,该值具有N和p
WHERE子句将从tabale1中获取t1的值,其中值为p,您可以将该谓词移动到JOIN条件
交叉联接会针对左表中的每一行重复右表中的每一行。然后可以在where子句中指定任何不相关的条件:
在您的场景中,任何连接都将充当交叉连接,因为两个连接中都有许多重复项
表1中有100行“P”,表2中有50行“P”
select t1.*,t2.*
from Table1 t1
join Table2 t2
where t1.field1 = 'N'
and t2.field1 IN ('N', 'P')
而且您要求只获取100行是不可能的。因为,表1中的第一行“P”将与表2中的50行“P”连接起来,因此表1中的每一行都将有50行输出。
如果你真的想要100行,那么就设置一个限制或顶部作为过滤条件
希望这对你有帮助 ??这是基本SQL,所以请发布您当前的查询,并解释什么不起作用。我找不到语法。因此,我没有在这里发布任何东西。如果您知道,请帮助。t1和t2字段都具有相同的数据类型char。但在这里,我想把t1值为'P'的记录与另一个表列t2中同时值为'P'和'N'的数据连接起来?你想把这张桌子并排看吗?不,我想把它看作一张桌子。列应并排。默认联接为内部联接。必须写出一个交叉连接:yeah@Andomar编辑。但无论如何,在这种情况下,内部连接和交叉连接将给出相同的结果,对吗??我写的东西是正确的。如果有任何错误,请给出反馈。默认值为内部连接,但写为“连接”也可以正确完成工作@Andomart1 join t2将为缺少的on子句提供语法错误。你是对的,t1在1=1上连接t2和t1交叉连接t2将给出相同的结果。
select t1.*,t2.*
from Table1 t1
join Table2 t2
where t1.field1 = 'N'
and t2.field1 IN ('N', 'P')