MySQL从两个查询中获取匹配结果?

Tal*_*n06 2 php mysql

我有一些PHP代码生成多个MySql查询并结合结果.我试图找到一种方法来组合查询,以便在两个查询中匹配的唯一字段被输出.

PHP代码输出示例.

SELECT LoadData_3 pow FROM tblLoadData WHERE LoadData_1 = 'test1' AND LoadData_2 = 'test2' 
UNION ALL
SELECT LoadData_3 pow FROM tblLoadData WHERE LoadData_1 = 'test3' AND LoadData_2 = 'test4'
Run Code Online (Sandbox Code Playgroud)

我只想要两个查询中相同的LoadData_3字段.

Mik*_*scu 9

使用INTERSECT操作:

(SELECT LoadData_3 pow 
  FROM tblLoadData 
 WHERE LoadData_1 = 'test1' 
   AND LoadData_2 = 'test2')
INTERSECT                     -- return the intersection of the two queries
(SELECT LoadData_3 pow 
  FROM tblLoadData 
 WHERE LoadData_1 = 'test3' 
   AND LoadData_2 = 'test4')
Run Code Online (Sandbox Code Playgroud)

编辑

对于MySQL,您可以使用 INNER JOIN USING (..)

SELECT pow -- Use DISTINCT pow instead if you want unique values (like INTERSECT)
  FROM (SELECT LoadData_3 pow 
          FROM tblLoadData 
         WHERE LoadData_1 = 'test1' 
           AND LoadData_2 = 'test2') T1
  INNER JOIN
       (SELECT LoadData_3 pow 
          FROM tblLoadData 
         WHERE LoadData_1 = 'test3' 
           AND LoadData_2 = 'test4') T2
  USING (pow)
Run Code Online (Sandbox Code Playgroud)

或者使用WHERE IN子句:

SELECT LoadData_3 pow -- Use DISTINCT pow instead if you want unique values (like INTERSECT)
  FROM tblLoadData 
 WHERE LoadData_1 = 'test1' 
   AND LoadData_2 = 'test2'
   AND LoadData_3 IN (SELECT LoadData_3 pow 
                        FROM tblLoadData 
                       WHERE LoadData_1 = 'test3' 
                         AND LoadData_2 = 'test4')
Run Code Online (Sandbox Code Playgroud)