我有一个查询,在这个查询中,它从我的userTable中带回结果很好。但是,我正在尝试找出一种方法来先显示我们大学的个人资料,然后再显示结果。最好的方法是什么?
$sql = mysqli_query($con, "SELECT * FROM userTable WHERE keyID LIKE '%".getID."%'
ORDER BY Lname ASC"
我的数据库有一个名为"教育"的列,其中显示了个人资料来自的大学。我们想先使用我们的大学进行排序,然后再显示其他结果。
这样的东西会起作用。 你给那些你想首先显示的排名,而不是你给那些你以后要显示的等级。这不是一个非常有效的查询。
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
试试这个
$sql = mysqli_query($con, "SELECT * FROM userTable WHERE keyID LIKE '%".getID."%'
ORDER BY Education ASC, Lname ASC"
这将按 a-z 的升序对"教育"进行排序
编辑
$sql = mysqli_query($con, "SELECT * FROM userTable WHERE keyID LIKE '%".getID."%'
CASE WHEN Education = 'ThisUniv' then 1 else 2 end,education, Lname ASC"
将耶鲁改为您的大学名称