如果我有这样的表:
int VARCHAR int
----------------------------------
1 "U" 1
2 "A" 1
3 "B" 1
我通过php的mysqli运行查询:
$sql = "SELECT * FROM " . parent::GetTableName();
if ($current_user_only == TRUE)
$sql = $sql . " WHERE userID_FK=" . parent::GetUserID();
$result = $this->get_db_con()->query($sql);
if ($result == FALSE)
throw new Exception("SQL exec failed (". __FILE__ . __LINE__ . "): $this->get_db_con()->error");
while ($row = mysqli_fetch_array($result))
{
echo($row[1]);
}
我得到这样的输出:
2 "A" 1
3 "B" 1
1 "U" 1
这就是结果似乎按VARCHAR列排序。如果我在SEQUEL PRO中运行相同的查询,它会按照我期望的顺序给出结果,这是它们在表格中输入的顺序。
有什么想法吗?
答案 0 :(得分:4)
如果没有order by子句,我绝不会假设任何具体的订单。如果您希望按ID排序行,请使用order by ID
。
答案 1 :(得分:3)
简短回答:没有。
答案很长:
对于MyISAM表,它是自然顺序,即行存储在磁盘上的顺序,通常是插入顺序。这可以通过运行ALTER TABLE ORDER BY
来修改
对于InnoDB表,它是主键的顺序。