Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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_Filter_Subquery - Fatal编程技术网

SQL重新查询同一个表

SQL重新查询同一个表,sql,filter,subquery,Sql,Filter,Subquery,我有一个表,其中包含一系列信息: 零件号、类别、值、频率、频率、频率1、频率2 我正在尝试根据用户输入进行筛选。。。说他们输入了零件号“xzy” 我想重新查询该表,但也要包括符合xyz查询产生的所有相同值的部分 我想在我的子查询之前使用IN,但这只限于一列,我该如何处理这三列呢 当然,下面的选项不起作用> SELECT backup.[Part Number], backup.Value, backup.FreqL, backup.FreqH FROM backup WHERE (backup

我有一个表,其中包含一系列信息:

零件号、类别、值、频率、频率、频率1、频率2

我正在尝试根据用户输入进行筛选。。。说他们输入了零件号“xzy”

我想重新查询该表,但也要包括符合xyz查询产生的所有相同值的部分

我想在我的子查询之前使用IN,但这只限于一列,我该如何处理这三列呢

当然,下面的选项不起作用>

SELECT backup.[Part Number], backup.Value, backup.FreqL, backup.FreqH
FROM backup 
WHERE (backup.Value AND backup.FREQ1 AND Backup.FREQ2) (
   SELECT backup.Value, backup.FREQ1, backup.FREQ2, backup.CAT
   FROM backup
   WHERE ((backup.[Part Number]) ="xyz") 
);
感谢您的帮助

多谢各位


JR

我想你需要下面的查询-

SELECT B1.[Part Number], B1.Value, B1.FreqL, B1.FreqH
FROM backup B1
JOIN (SELECT Value, FREQ1 , FREQ2
      FROM backup
      WHERE [Part Number] ="xyz") B2 ON B1.Value = B2.Value
                                     AND B1.FREQ1 = B2.FREQ1 
                                     AND B1.FREQ2 = B2.FREQ2;

典型的方法使用
存在

SELECT b.[Part Number], b.Value, b.FreqL, b.FreqH
FROM backup b
WHERE EXISTS (SELECT 1
              FROM backup b2
              WHERE b2.[Part Number] = 'xyz' AND
                    b2.Value = b.Value AND
                    b2.FREQ1 = b.FREQ1 AND 
                    b2.FREQ2 = b.FREQ2
             );

您不会说您的平台在DB2元组中工作——就像这样:

SELECT backup.[Part Number], backup.Value, backup.FreqL, backup.FreqH
FROM backup 
WHERE (backup.Value, backup.FREQ1, Backup.FREQ2) = (
   SELECT backup.Value, backup.FREQ1, backup.FREQ2
   FROM backup
   WHERE ((backup.[Part Number]) ="xyz") 
);

要么做EXISTS而不是IN,要么做self-join。我更喜欢join而不是EXISTS。(如果没有像db2中那样的tuples选项)
SELECT backup.[Part Number], backup.Value, backup.FreqL, backup.FreqH
FROM backup 
WHERE (backup.Value, backup.FREQ1, Backup.FREQ2) = (
   SELECT backup.Value, backup.FREQ1, backup.FREQ2
   FROM backup
   WHERE ((backup.[Part Number]) ="xyz") 
);