MYSQL ORDER BY按字母顺序不起作用

时间:2015-10-07 15:46:31

标签: php mysql

我有一个包含设施名称的表的数据库。我试图按设施名称的字母顺序输出设施+显示与之关联的帐户。

设施表看起来像这样:

id | account_id | facility_name |
 2 |     2      |  Facility A   |
 3 |     2      |  Facility B   |
 4 |     2      |  Facility A   |

帐户表如下所示:

account_id | account_name |
    1      |  Account 1   |
    2      |  Account 2   | 
    3      |  Account 3   | 

我正试图让我的输出像这样:

 facility_name | account_name |
  Facility A   |  Account 1   |
  Facility B   |  Account 1   | 

我正在使用PHP将其输出到一个表中,所以这里看起来有点像:

$sql = "SELECT * FROM facility INNER JOIN account ON account.account_id = facility.account_id WHERE facility.account_id = '". $q ."' ORDER BY 'facility_name'";

echo   "<table>
            <tr>
            <th>Facility Name</th>
            <th>Account Name</th>
            </tr>";
        while ($row = mysqli_fetch_array($data)) {
            echo "<tr>";
            echo "<td>" . $row['facility_name'] . "</td>";
            echo "<td>" . $row['account_name'] . "</td>";
            echo "</tr>";
        }
echo "</table>";

然而,这似乎并没有将我的表命名为我的设施名称,它只是按照输入的顺序输出。

如何输出我的数据,以便它也被&#39; facility_name&#39;?

订购

2 个答案:

答案 0 :(得分:2)

问题就在这里:

ORDER BY 'facility_name'";

您最近通过字符串&#34; facility_name&#34;。

进行排序

取出引号如:

ORDER BY facility_name";

答案 1 :(得分:0)

报价错了。它应该只是没有引号的字段名称:

ORDER BY facility_name

或使用反引号(允许,但只有在字段名称中有空格或其他特殊字符时才需要):

ORDER BY `facility_name`

如果你像你一样使用普通引号,它将是一个字符串文字,所以你只是按文本'facility_name'排序,它对每一行都有相同的常量值,所以排序没有效果。