【发布时间】:2019-10-26 03:25:55
【问题描述】:
我正在尝试选择第一行,其中可以有任意数量的行,这些行具有对它们进行分组的公共唯一 ID(不一定在数据库中按顺序排列)。
我在主列上使用 ORDER BY,它是一个完全唯一的 ID,是一个 int(11) 并使用 LIMIT 1。
$orderins = $db->Execute("select *
from " . TABLE_ORDERS_STATUS_HISTORY . "
where orders_id = '.$zv_orders_id.' order by orders_status_history_id ASC LIMIT 1");
$orderins = $orderins->fields['comments']; // SEND VAR
orders_status_history_id 是主要的(完全唯一的 ID),也是第一列,使用自动增量。
orders_id 是分组行将共享的共享 ID。共享此 id 的行不一定是一个接一个。
我得到一个空结果。
当我删除 ORDER BY 时,它会发送一个结果。
让我还包括,当我删除 ORDER BY 时,到目前为止它只返回了包含多个测试的第一行。
返回具有该 orders_id 的数据库中存在的第一行实际上是所需的结果。所以也许我不需要 ORDER BY 来工作或在那里。我能否确定 LIMIT 1 将始终获得与 WHERE BY 匹配的数据库中的第一行,或者它是否有可能返回也共享 WHERE BY 过滤器的其他行之一。
【问题讨论】:
-
尝试将其更改为
"SELECT * FROM `" . TABLE_ORDERS_STATUS_HISTORY . "` WHERE `orders_id` = '.$zv_orders_id.' ORDER BY `orders_status_history_id` ASC LIMIT 1"-- 只需在列名周围加上引号 thingamabobs 就已经救了我了 -
也尝试将其更改为
ORDER BY而不是order by -
@E2017 抱歉,我忘了说,我确实尝试过,但没有成功。
-
您正在混合使用双引号和单引号,将您的查询更改为
"select * from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '{$zv_orders_id}' order by orders_status_history_id ASC LIMIT 1" -
等待尝试更改它
"SELECT * FROM " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '$zv_orders_id' order by orders_status_history_id ASC LIMIT 1"
标签: php mysql sql-order-by limit