我在函数中有以下代码。 我的问题是,当我得到结果时,如何保持我的数组顺序“(8,7,6)”?
$sql = "SELECT table1.id FROM table1
join table2
on table1.id = table2.number
WHERE table2.id IN (8,7,6)
GROUP BY table1.id
HAVING COUNT(DISTINCT table1.id)";
$result = $this->conn->query( $sql );
while($row = mysqli_fetch_assoc($result))
$returnArray[] = $row;
return $returnArray;
换句话说,如何根据table1中初始数组索引的等价物来重新排序returnArray。
let say if
8 = table1.id 4
7 = table1.id 2
6 = table1.id 1
我得到的那一刻(1,2,4) 我喜欢(4,2,1)
答案 0 :(得分:0)
这取决于IN数组的排序方式。如果总是排序,就像上面的例子一样,这将起作用:
SELECT table1.id FROM table1
join table2
on table1.id = table2.number
WHERE table2.id IN (8,7,6)
GROUP BY table1.id
HAVING COUNT(DISTINCT table1.id)
ORDER BY table2.id DESC
如果值可以是非排序顺序,那么您需要为可以排序的列赋值。
一个硬编码的例子是:
SELECT table1.id,
CASE WHEN table2.id = 8 THEN 1
WHEN table2.id = 7 THEN 2
WHEN table2.id = 6 THEN 3
ELSE 99 END as ordering
FROM table1
join table2
on table1.id = table2.number
WHERE table2.id IN (7,6,8)
GROUP BY table1.id
HAVING COUNT(DISTINCT table1.id)
ORDER BY ordering
如果两个工作都没有,你需要一个临时表来插入值和另一个值与排序顺序,然后你加入该表并按排序值排序。
如果这不起作用,请添加有关您需求的更多信息。