Php 如何将两个MySQL列合并为一个列?

Php 如何将两个MySQL列合并为一个列?,php,mysql,sorting,Php,Mysql,Sorting,我要转换此MySQL表: title1 | title2 |type -------+--------+---- qwe1 | qwe2 | 3 asd1 | asd2 | 7 使用PHP创建此表 title | type ------+----- asd1 | 7 asd2 | 7 qwe1 | 3 qwe1 | 3 但我不知道如何按第一列对PHP表进行正确排序 这是我目前使用的代码 $sql = "SELECT * FROM table O

我要转换此MySQL表:

title1 | title2 |type  
-------+--------+----
qwe1   | qwe2   | 3  
asd1   | asd2   | 7
使用PHP创建此表

title | type  
------+-----
asd1  | 7  
asd2  | 7  
qwe1  | 3  
qwe1  | 3
但我不知道如何按第一列对PHP表进行正确排序

这是我目前使用的代码

$sql = "SELECT * FROM table ORDER BY title1, title2";   
$pager = new PS_Pagination( $dbh, $sql, 3, 4, null );//pagination class
$rs = $pager->paginate(); 

while ($row = $rs->fetch(PDO::FETCH_ASSOC)){
    echo "<tr>";
    echo "<td>{$row['title1']}</td>";
    echo "<td>{$row['type']}</td>";
    echo "</tr>";

    echo "<tr>";
    echo "<td>{$row['title2']}</td>";
    echo "<td>{$row['type']}</td>";
    echo "</tr>";
}       

echo "</table>";

我认为您需要使用UNION:

SELECT title1, type
FROM YourTable
UNION ALL
SELECT title2, type
FROM YourTable
如果不希望有重复项,可以删除use UNION而不是UNION ALL

-编辑

如前所述,如果您的目的是对这些结果进行排序,只需添加一个ORDER BY子句并将您的列别名为:

SELECT title1 title, type
FROM YourTable
UNION ALL
SELECT title2 title, type
FROM YourTable
ORDER BY title

祝您好运。

在SQL本身中,您可以使用UNION来完成。并对整个查询使用ORDER BY

SELECT `title1` AS `title`, `type`
FROM `table`
UNION
SELECT `title2` AS `title`, `type`
FROM `table`
ORDER BY `title` ASC
输出
Fiddle:在使用之前,使用As将列重命名为相同的结构

你需要

i、 e

尝试:

希望我的语法正确

实际上,您需要执行两个查询并合并结果,这就是UNION所做的


编辑-查看其他答案了解UNION和UNION ALL之间的差异。

根据我对问题的理解,您希望将标题1+标题2合并,然后排序

我不明白为什么每个人都使用工会

Select concat(title1,title2) title, type
from yourTable
order by title asc 
我会做这项工作的


编辑:无法从iphone写入代码格式的文本。谢谢fthiella

我认为这里的主要问题是排序。因此,您可能应该在查询中按类型添加顺序、标题,并在单个SELECT语句中添加别名。@TillHelgeHelwig-我认为OP不是在问如何排序,而是在问如何获得联合体-他们试图获得具有顺序的联合体。虽然添加ORDERBY条款很容易…但我很好奇为什么您需要它?您确定您的表设计正确吗?请注意,在第二次查询中不需要AS。
SELECT title1 as title, type
FROM YourTable
UNION ALL
SELECT title2 as title, type
FROM YourTable
select * from (select title1 as title, type
from table
union
select title2 as title, type
from table) order by title
SELECT 'title1' AS 'title', 'type' from 'table'
UNION
SELECT 'title2' AS 'title', 'type' from 'table'
ORDER BY 'title'
Select concat(title1,title2) title, type
from yourTable
order by title asc