我对此表单有疑问:
$query = "SELECT `id`, `value` FROM `table`
WHERE `id` IN "."('".$mod."') ORDER BY FIELD (`id`,'".$mod."')";
$ mod是一个值数组,可以转换为如下字符串:
$mod = implode("','", $mod);
$ mod中的值是简单的非负整数但它们有时会重复...我需要查询返回一个结果,其中包含所有行,包括重复顺序,即
当$ mod包含以下一组id {39,21,34,14,35,21}时,查询应该返回这些行:
$result id value
row1 35 "value35"
row2 21 "value21"
row3 34 "value34"
row4 14 "value14"
row5 35 "value35"
row6 21 "value21"
答案 0 :(得分:2)
您需要一个包含您的身份证的临时表。使用递增主键作为订单。
CREATE TEMPORARY TABLE setofids ( setorder int auto_increment primary key, id int);
INSERT INTO setofids (id) VALUES (35),(21),(34),(14),(35),(21);
然后加入你的桌子:
SELECT table.id, table.value FROM table
JOIN setofids USING (id)
ORDER BY setofids.setorder