SQL - 水平连接两个选择结果

时间:2016-02-09 09:32:53

标签: mysql join

我使用两个SELECT语句创建以下两个临时表t1和t2:

+------+------+
| Col1 | Col2 |
+------+------+
| A    |    1 |
| B    |    2 |
| C    |    3 |
+------+------+

+------+------+
| Col3 | Col4 |
+------+------+
| C    |    5 |
| D    |    6 |
| E    |    7 |
+------+------+

两个SELECT语句本质上总是返回相同数量的行。现在我想水平地连接/组合这两个结果以获得以下输出表:

+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 |
+------+------+------+------+
| A    |    1 | C    |    5 |
| B    |    2 | D    |    6 |
| C    |    3 | E    |    7 |
+------+------+------+------+

我尝试使用多个JOIN语句,但可以找到一种聪明的方法。我还尝试了UNION语句,它提供了一个垂直连接,但不是所需的水平版本。

这里有两个简单的SELECT语句,可以更好地定位可能的解决方案:

SELECT * FROM `t1` WHERE date = DATE(NOW())

SELECT * FROM `t2` WHERE date = DATE(NOW())

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

试试这个

ORDER BY

请注意,无法保证顺序,在每个FROM t1FROM t2子查询的末尾添加$data=json_decode($data); foreach($data->menu as $menu){ foreach($menu as $key => $value){ foreach($value as $key_inner => $value_inner){ echo '<h3>'.$value_inner->name.'</h3><br><p>'.$value_inner->price.'</p><br>'; } } } 子句,基本上我们是通过row_number加入的,因为MySQL没有&#39 ; t有ROW_ID,ROW_NUM(类似于mssql,oracle,postgres)我们使用了会话变量

答案 1 :(得分:0)

为关系创建虚拟ID。但这不是推荐的方式。

{{1}}

理想的解决方案是在表格之间添加适当的关系。如果没有,最好单独查询并在应用程序层中进行必要的连接