mysql中有两个表,表1有一列名为fruit,其中前行数据分别为apples,banana,pear。表2有一列为str,其中3行数据为a,b,c。现在想实现查询表1和表2,返回两列数据:第一行apple, a第二行apple,b,第三行apple,c第四行banana a,第五行banana,b第六行banana,c,第七行pear , ,以此类推,如何实现?请给个简单的例子
时间: 2024-02-21 16:00:20 浏览: 298
你可以使用`CROSS JOIN`语句实现两个表的笛卡尔积,然后使用`CONCAT()`函数将两列数据拼接起来。具体实现步骤如下:
假设表1名为`fruits`,表2名为`letters`,它们的结构如下:
```
-- 表1 fruits
+--------+
| fruit |
+--------+
| apples |
| banana |
| pear |
+--------+
-- 表2 letters
+-----+
| str |
+-----+
| a |
| b |
| c |
+-----+
```
执行以下SQL语句,就可以得到符合要求的结果集:
```
SELECT CONCAT(fruit, ' ', str) AS result
FROM fruits CROSS JOIN letters
ORDER BY fruit, str;
```
这个查询语句会将表1和表2进行`CROSS JOIN`,得到一个包含所有可能组合的结果集。然后使用`CONCAT()`函数将`fruit`列和`str`列拼接起来,得到最终的结果集。最后,按照`fruit`列和`str`列的顺序进行排序。执行以上SQL语句后,得到的结果如下:
```
+-------------+
| result |
+-------------+
| apples a |
| apples b |
| apples c |
| banana a |
| banana b |
| banana c |
| pear a |
| pear b |
| pear c |
+-------------+
```
每一行都包含了`fruit`列和`str`列的组合结果。
阅读全文