我有一些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字段.
使用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)
| 归档时间: |
|
| 查看次数: |
4075 次 |
| 最近记录: |