在MySQL中合并两个结果集

时间:2019-04-10 01:00:09

标签: mysql

我正在尝试将2个mysql select查询合并到一个结果集中

我尝试了全部使用Union和Union,但结果却不尽人意

第一个查询:SELECT * FROM Users按AGE排序

NAME AGE
ABC 12
DEF 35
GHI 39

第二个查询:SELECT * FROM按PRICE排序的产品

NAME PRICE
ABC 11
DEF 23
GHI 25

我希望结果是

NAME AGE NAME PRICE
ABC 12 ABC 11
DEF 35 DEF 23
GHI 39 GHI 25

但是当我使用UNION时,结果是

NAME AGE
ABC 12
DEF 35
GHI 39
ABC 11
DEF 23
GHI 25

2 个答案:

答案 0 :(得分:0)

您只需按名称加入即可。检查一下

SELECT u.NAME, u.AGE, p.NAME, p.PRICE
FROM Products p
INNER JOIN Users u ON p.NAME=u.NAME

将Union看作是将所有行放入一张大表中。


在考虑两个表时,Join用于逐行映射。


我还使用了别名来使代码更简洁。 别名只是表的缩写。 p代替产品,o代替订单。

答案 1 :(得分:0)

由于两个查询都不相关,因此请使用PHP来处理输出:

$users = $conn->query('SELECT Name,AGE FROM Users Order by AGE');
$products = $conn->query('SELECT Code,Price FROM Products Order by Price');
do {
  $u = $users->fetch();
  // handle empty case
  // else write user row data
  $p = $products->fetch();
  // handle empty case
  // else write product row data
} while (/* both not empty condition */);