2013-10-29 50 views
1

我有一個查詢,在這個查詢中,它帶回來我的userTable結果就好了。但是,我試圖找出一種方法來顯示我們大學的個人資料,然後顯示結果。什麼是最好的方法?如何Mysqli先查詢特定記錄?

$sql = mysqli_query($con, "SELECT * FROM userTable WHERE keyID LIKE '%".getID."%' 
ORDER BY Lname ASC" 

我的數據庫有一個名爲'教育'的欄目,它顯示了配置文件來自的大學。我們想先排序使用我們的大學,然後再顯示其他結果。

+1

請通過sqlfiddle提供表格結構和示例數據 – user4035

+0

您最終得到它的工作@MizAkita? –

回答

0

試試這個

$sql = mysqli_query($con, "SELECT * FROM userTable WHERE keyID LIKE '%".getID."%' 
ORDER BY Education ASC, Lname ASC" 

這將在一個升序排序的 「教育」 從AZ

編輯

$sql = mysqli_query($con, "SELECT * FROM userTable WHERE keyID LIKE '%".getID."%' 
CASE WHEN Education = 'ThisUniv' then 1 else 2 end,education, Lname ASC" 

變化耶魯那麼貴校的名字

+0

但它並不能保證,必要的大學的記錄會先到達 – user4035

+0

這是真的。將等待從@MizAkita獲得更多信息 –

+0

嗯,我知道我可以通過教育訂購,但我們的大學需要是第一個,所以它可能是'ORDER BY Education =「ThisUniv」ASC ...? – MizAkita

0

像這樣的東西會奏效。你給予你想要顯示的排名,然後給出你希望顯示的排名。這不是一個非常有效的查詢。

SELECT innerquery.* 
    FROM (SELECT 1 AS RANK, 
       u1.* 
      FROM userTable u1 
     WHERE u1.keyID LIKE '%".getID."%' 
      AND education = 'my uni' 
     ORDER BY u1.Lname ASC 
     UNION 
     SELECT 2 AS RANK, 
       u2.* 
      FROM userTable u2 
     WHERE u2.keyID LIKE '%".getID."%' 
      AND education <> 'my uni' 
     ORDER BY u2.Lname ASC 
    ) innerquery 
ORDER BY RANK, Lname asc 
+0

在訂單條款恕我直言,這更容易申請一個案件。 –

+0

嗯...這沒有爲我工作。 @ urser293 – MizAkita

+0

你嘗試過什麼?它應該工作。 – user2932397