我想转换这个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>";
答案 0 :(得分: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 |
+-------+------+
答案 1 :(得分:5)
尝试:
SELECT 'title1' AS 'title', 'type' from 'table'
UNION
SELECT 'title2' AS 'title', 'type' from 'table'
ORDER BY 'title'
希望我的语法正确。
基本上你想做两个查询并合并结果,这就是UNION的作用。
编辑(参见UNION和UNION ALL之间差异的其他答案)。
答案 2 :(得分:4)
在使用Union
之前,使用As将列重命名为gt相同的结构SELECT title1 as title, type
FROM YourTable
UNION ALL
SELECT title2 as title, type
FROM YourTable
答案 3 :(得分: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
祝你好运。
答案 4 :(得分:2)
您需要union
即
select * from (select title1 as title, type
from table
union
select title2 as title, type
from table) order by title
答案 5 :(得分:0)
从我对你想要的concantinate title1 + title2然后订购的问题的理解。
我不明白为什么每个人都在使用工会
Select concat(title1,title2) title, type
from yourTable
order by title asc
会做这份工作
编辑:无法从iphone中编写代码格式的文本。谢谢fthiella