在MySQL中合并两个结果集

在MySQL中合并两个结果集,mysql,Mysql,我试图将两个mysql select查询组合成一个结果集 我尝试过使用Union和Union all,但它给了我意想不到的结果 第一次查询:按年龄从用户订单中选择* NAME AGE ABC 12 DEF 35 GHI 39 第二次查询:按价格从产品订单中选择* 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时,

我试图将两个mysql select查询组合成一个结果集

我尝试过使用Union和Union all,但它给了我意想不到的结果

第一次查询:按年龄从用户订单中选择*

NAME AGE
ABC 12
DEF 35
GHI 39
第二次查询:按价格从产品订单中选择*

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

您只需通过名称加入即可。看看这个

SELECT u.NAME, u.AGE, p.NAME, p.PRICE
FROM Products p
INNER JOIN Users u ON p.NAME=u.NAME
把工会想象成把你所有的行放在一张大桌子上


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


我还使用了上面的别名使代码更加简洁。
别名只是表的一个简短名称。p代替产品,o代替订单。

您只需通过名称加入即可。看看这个

SELECT u.NAME, u.AGE, p.NAME, p.PRICE
FROM Products p
INNER JOIN Users u ON p.NAME=u.NAME
把工会想象成把你所有的行放在一张大桌子上


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


我还使用了上面的别名使代码更加简洁。
别名只是表的一个简短名称。p代替产品,o代替订单。

由于两个查询不相关,请使用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 */);

由于两个查询不相关,请使用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 */);


名称上的连接看起来很像您想要的,但是用户和产品共享名称值时数据很奇怪。这只是一个示例,我应该使用哪个连接?让我们假设它是一个代码而不是一个名称用户和产品之间有什么关系?为什么要把它们放在同一行?它们彼此不相关,我希望这些表为了另一个目的并排显示。如果它们不相关,那么就不需要联接。2个查询或一个联合,这只是一个格式问题,而不是一个查询名称上的连接看起来像你想要的,但是数据很奇怪,用户和产品共享名称值。这只是一个例子,我应该使用哪个连接?让我们假设它是一个代码而不是一个名称用户和产品之间有什么关系?为什么要把它们放在同一行?它们彼此不相关,我希望这些表为了另一个目的并排显示。如果它们不相关,那么就不需要联接。2个查询或一个联合,这只是一个格式问题,不是一个查询。它返回55行,而我在两个表中都有大约15行。你确定吗?您能从产品中选择计数(*)并从用户中选择计数(*)并检查产品计数10用户计数8用户表吗?因为如果您有多个同名用户,这可能就是结果。是的,用户同名如何避免重复结果?它返回55行,而我在两个表中都有大约15行。您确定吗?您能从产品中选择计数(*)并从用户中选择计数(*)并检查产品计数10用户计数8用户表吗?因为如果有多个用户同名,这可能就是结果。是的,用户同名如何避免重复结果?这是我正在考虑的方法,我尝试了$USERS=$conn->query('SELECT name,AGE FROM USERS Order by AGE')$products=$conn->query('SELECT Code,Price FROM products Order by Price')$语句=$connection->prepare($users)$语句->执行()$结果=$statement->fetchAll()$语句1=$connection->prepare($products)$语句1->execute()$result1=$statement1->fetchAll();然后foreach($result作为$row):foreach($result1作为$row1):echo转义($row[“NAME”]);回声转义($row1[“NAME”]);endforeach;endforeach;2 foreach数组不工作,请思考嵌套循环实际上是什么,这就是我编写单个循环的原因。填补空白,我发现PHP和web非常可怕。这是我正在考虑的方法,我尝试了$users=$conn->query('SELECT Name,AGE FROM users Order by AGE')$products=$conn->query('SELECT Code,Price FROM products Order by Price')$语句=$connection->prepare($users)$语句->执行()$结果=$statement->fetchAll()$语句1=$connection->prepare($products)$语句1->execute()$result1=$statement1->fetchAll();然后foreach($result作为$row):foreach($result1作为$row1):echo转义($row[“NAME”]);回声转义($row1[“NAME”]);endforeach;endforeach;2 foreach数组不工作,请思考嵌套循环实际上是什么,这就是我编写单个循环的原因。填补空白,我发现PHP和web非常可怕。