Php 如何按照我在“in”条件中指定的行id的顺序对mysql结果进行排序
查询是:Php 如何按照我在“in”条件中指定的行id的顺序对mysql结果进行排序,php,mysql,sql,database,Php,Mysql,Sql,Database,查询是: SELECT * FROM `stock` WHERE `stockid` IN (33, 12,53,4,99,88) 但是当我运行查询时,它不会按33、12、53等顺序返回行 我正在使用php。以上是一个简化的示例。您可以使用“按字段排序” SELECT * FROM `stock` WHERE `stockid` IN (33, 12,53,4,99,88) order by field(stockid,33, 12,53,4,99,88) 也许您可以创建一个包含两列“
SELECT * FROM `stock` WHERE `stockid` IN (33, 12,53,4,99,88)
但是当我运行查询时,它不会按33、12、53等顺序返回行
我正在使用php。以上是一个简化的示例。您可以使用“按字段排序”
SELECT * FROM `stock` WHERE `stockid` IN (33, 12,53,4,99,88)
order by field(stockid,33, 12,53,4,99,88)
也许您可以创建一个包含两列“stockIdColumn”、“orderColumn”的临时表
| STOCKID | ORDER |
| 33 | 1 |
| 12 | 2 |
| 53 | 3 |
| 4 | 4 |
| 99 | 5 |
! 88 | 6 |
将此表与您的和按列排序的[order]联接
SELECT s.*
FROM stock s JOIN temp t ON t.stockId = s.id
ORDER BY t.order
不要认为这是真正的答案,但另一种方式是:
SELECT * FROM stock WHERE stockid IN (33)
UNION SELECT * FROM stock WHERE stockid IN (12)
UNION SELECT * FROM stock WHERE stockid IN (53)
UNION SELECT * FROM stock WHERE stockid IN (4)
UNION SELECT * FROM stock WHERE stockid IN (99)
UNION SELECT * FROM stock WHERE stockid IN (88)
;
它不适用于我从[OrderDetails]中选择*,其中11,72,42,14 order中的productid按字段productid,11,72,42,14->错误1无法准备语句添加与其相关的完整代码以准备语句不查询。在DB中运行此查询,将得到您想要的结果。