8

我想转换这个 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>";
4

6 回答 6

9

在 SQL 本身中,您可以使用UNION. 并ORDER BY用于整个查询!

SELECT `title1` AS `title`, `type`
FROM `table`
UNION
SELECT `title2` AS `title`, `type`
FROM `table`
ORDER BY `title` ASC

输出

+-------+------+
| TITLE | TYPE |
+-------+------+
|  asd1 |    7 |
|  asd2 |    7 |
|  qwe1 |    3 |
|  qwe2 |    3 |
+-------+------+

小提琴:http ://sqlfiddle.com/#!2/ff9cf/1

于 2013-02-08T07:59:31.780 回答
5

尝试:

SELECT 'title1' AS 'title', 'type' from 'table'
UNION
SELECT 'title2' AS 'title', 'type' from 'table'
ORDER BY 'title'

希望我的语法正确。

本质上,您想要执行两个查询并合并结果,这就是 UNION 所做的。

编辑(请参阅其他答案以了解 UNION 和 UNION ALL 之间的区别)。

于 2013-02-08T08:01:45.170 回答
4

在使用Union之前使用 As 将列重命名为 gt 相同的结构

SELECT title1 as title, type
FROM YourTable
UNION ALL
SELECT title2 as title, type
FROM YourTable
于 2013-02-08T07:59:41.477 回答
2

我认为你需要使用 UNION:

SELECT title1, type
FROM YourTable
UNION ALL
SELECT title2, type
FROM YourTable

如果您不想重复,可以删除使用 UNION 而不是 UNION ALL。

- 编辑

正如建议的那样,如果您也打算对这些结果进行排序,只需添加一个 ORDER BY 子句并为您的列命名:

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

祝你好运。

于 2013-02-08T07:58:06.650 回答
2

你需要工会

IE

select * from (select title1 as title, type
from table
union
select title2 as title, type
from table) order by title
于 2013-02-08T08:00:04.237 回答
0

根据我对您想要连接 title1+title2 然后订购的问题的理解。

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

Select concat(title1,title2) title, type
from yourTable
order by title asc 

会做这项工作

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

于 2013-02-08T08:39:25.753 回答