排序我的数据库数据

时间:2011-03-19 06:05:51

标签: php sql sorting

我有一个像这样的数据库表

<table>
 <tr>
   <th>no</th>
   <th>name</th>
   <th>income</th>
   <th>work</th>
   <th>score</th>
 </tr>
 <tr>
   <td>1</td>
   <td>alan</td>
   <td>US 100</td>
   <td>Designer</td>
   <td>30%</td>
 </tr>
 <tr>
   <td>2</td>
   <td>lara</td>
   <td>US 100</td>
   <td>Doctor</td>
   <td>34%</td>
 </tr>
 <tr>
   <td>3</td>
   <td>foong</td>
   <td>US 100</td>
   <td>Teacher</td>
   <td>7%</td>
 </tr>
 <tr>
   <td>4</td>
   <td>Rose</td>
   <td>US 50</td>
   <td>Waitress</td>
   <td>55%</td>
 </tr>
 <tr>
   <td>5</td>
   <td>Jack</td>
   <td>US 30</td>
   <td>Programmer</td>
   <td>50%</td>
 </tr>
 <tr>
   <td>6</td>
   <td>jeff</td>
   <td>US 3</td>
   <td>Lawyer</td>
   <td>90%</td>
 </tr>
 <tr>
   <td>7</td>
   <td>elson</td>
   <td>US 2000</td>
   <td>Footballer</td>
   <td>60%</td>
 </tr>
 <tr>
   <td>8</td>
   <td>steve</td>
   <td>US 22</td>
   <td>chef</td>
   <td>10%</td>
 </tr>
 <tr>
   <td>9</td>
   <td>albert</td>
   <td>US 35</td>
   <td>Admin</td>
   <td>80%</td>
 </tr>
 <tr>
   <td>10</td>
   <td>warnock</td>
   <td>US 5</td>
   <td>Technicer</td>
   <td>1%</td>
 </tr>
 <table>

然后我想要显示表上的结果只有前五名 但我的表格按收入列排序。

我用这个字符串来查询:

 SELECT * FROM table ORDER by score DESC, income ASC LIMIT 0,5 

但我的结果是分数而不是收入。

我希望桌子按收入排序,只有前5名得分

对此有何看法?

感谢您的进步。

6 个答案:

答案 0 :(得分:1)

我认为你问如何限制从sql发回的结果?

ORDER by score LIMIT 0,5放在查询的末尾

编辑:

SELECT * FROM table ORDER by score,income DESC LIMIT 0,5 

答案 1 :(得分:0)

如果你要显示前5名的分数,你必须用'得分'排序表而不是收入。您可以使用LIMIT 0,5将前5个列入表中。

答案 2 :(得分:0)

我想用sql查询然后把数据返回 ORDER BY得分为LIMIT 0,5 在你的SQL查询结束时。

或者,如果您想对HTML表格中的数据进行排序,您应该以手动方式进行排序。

祝你好运。 :)

答案 3 :(得分:0)

如果是的话,你的桌子上是否有一个独特的栏目。

SELECT t2.* 
 FROM (SELECT 
              uniqueId, score 
         FROM yourTable 
        ORDER BY score DESC 
        LIMIT  0,5) as t1
  INNER JOIN yourTable t2 
     ON t2.uniqueId = t1.uniqueId 
  ORDER BY t2.income ASC;

尝试首先在SQL浏览器上执行查询,看看结果是否正确。

注意:如果分数不是数字数据类型或者它是字符,则将按字母顺序排序。因此10在升序之前出现在2之前。在这种情况下你可以把得分+ 0,我还没有尝试过其他数据类型。

使用LIMIT 0,5的另一件事只能获得5行。然后根据你的问题,你想显示前五个分数。因此,如果您有10行具有相同的分数,并且它是最高分,则其他五行将不包括在内。

实施例。 15人得分:10,9,8,7,7,7,7,7,7,7,4,4,4,3,1在我看来所有得分大于4的人在前5位。所以LIMIT 0,5不是这样的。我希望这可以帮到你。

答案 4 :(得分:0)

SELECT * FROM table ORDER by score DESC, income ASC LIMIT 0,5

也许你应该这样写:

SELECT * FROM table ORDER by income ASC, score DESC LIMIT 0,5

答案 5 :(得分:0)

只需将初始结果集视为按收入对最终结果进行排序的子查询:

SELECT  *
FROM    (
    SELECT * FROM table ORDER by score DESC, income ASC LIMIT 0,5 
    ) t
ORDER BY income