Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询以联接具有不同值的表_Sql - Fatal编程技术网

SQL查询以联接具有不同值的表

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的值,该值具有

我遇到了一种情况,我需要根据具有不同值的列连接两个表

例如

表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的值,该值具有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')