使用多行作为一个

时间:2016-01-19 22:39:55

标签: mysql sql select mysqli sql-order-by

所以我有一个SQL查询

$choice = mysqli_real_escape_string($con,$_POST['choice']);

    if($option == "Name")
    $searchresult = "SELECT  id, stationname1, stationinfo1, stationprice1, image1, stationname2, stationinfo2, 
    stationprice2, image2, stationname3, stationinfo3, stationprice3, image3, stationname4, stationinfo4, stationprice4, 
    image4 FROM fuel WHERE stationlocation1 LIKE '%" . $location .  "%' ORDER BY stationname1 $choice"; //search database

获取数据并按站名1排列。问题是我有站点名1 - 4我想一起订购,所以所有名称都按字母顺序排列,无论列。我知道使用

ORDER BY stationname1 ASC, stationname2 ASC, stationname3 ASC, stationname4 ASC

因为单独订购而无法工作。请问我该怎么做才能一起订购?

基本上是

形式的东西
ORDER BY stationname1 and stationname2 and stationname3 and stationname4 ASC

例如...查看此数据库pic,我希望它显示:

  • another_one
  • NNNN
  • ordinarytest
  • zgkgkgkkg
按顺序

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

正如其他人所说,你真的应该规范化你的数据,这样你就不会每个实际行有效地拥有4行数据;但这应该可以得到你想要的东西(,可能是规范数据的途径):

SELECT  id, stationname1 AS stationname, stationinfo1, stationprice1, image1
FROM fuel 
WHERE stationlocation1 LIKE '%" . $location .  "%' 
UNION
SELECT  id, stationname2 AS stationname, stationinfo2, stationprice2, image2
FROM fuel 
WHERE stationlocation2 LIKE '%" . $location .  "%' 
UNION
SELECT  id, stationname3 AS stationname, stationinfo3, stationprice3, image3
FROM fuel 
WHERE stationlocation3 LIKE '%" . $location .  "%' 
UNION
SELECT  id, stationname4 AS stationname, stationinfo4, stationprice4, image4
FROM fuel 
WHERE stationlocation4 LIKE '%" . $location .  "%' 
ORDER BY stationname $choice;

ORDER BY的最后UNION条款适用于整个UNION,除非括号强制使用它。