对不起,我用了一个简单的例子,但我的表更复杂。 id_alternativo可以递归(id 18可以有一个id_alternativo = 19)等等,id_alternativo不能是表上最高的ID,所以ORDER BY id_alternativo DESC, id DESC
不起作用。下面是我的表的查询:
SELECT
a.id, a.compatibile, a.id_alternativo
FROM
ordini_righe AS a
WHERE
intestazione IN (398010) AND a.canc = 0
AND a.stato_ordine = 0
这里的结果
+-------+-------------+----------------+
| id | compatibile | id_alternativo |
+-------+-------------+----------------+
|828924 | 0 | 828931 |
+-------+-------------+----------------+
|828925 | 828932 | 0 |
+-------+-------------+----------------+
|828926 | 0 | 0 |
+-------+-------------+----------------+
|828927 | 0 | 0 |
+-------+-------------+----------------+
|828931 | 0 | 828933 |
+-------+-------------+----------------+
|828932 | 828932 | 0 |
+-------+-------------+----------------+
|828933 | 0 | 0 |
+-------+-------------+----------------+
我不得不下令compatibile说明,然后由beetween id_alternativo和id的关系责令其他记录。所以,我解决了使用新列这样
SELECT
a.id, a.compatibile, a.id_alternativo, IF(id_alternativo = 0, a.id, id_alternativo) ordine
FROM
ordini_righe AS a
JOIN
locazioni AS b ON a.locazione = b.id
JOIN
stati_righe AS c ON a.stato_ordine = c.id
WHERE
intestazione IN (398010) AND a.canc = 0
AND a.stato_ordine = 0
ORDER BY compatibile DESC, ordine, a.id ASC
而且我得到了想要的结果
+-------+-------------+----------------+--------+
| id | compatibile | id_alternativo | ordine |
+-------+-------------+----------------+--------+
|828925 | 828932 | 828931 | 828925 |
+-------+-------------+----------------+--------+
|828932 | 828932 | 0 | 828932 |
+-------+-------------+----------------+--------+
|828926 | 0 | 0 | 828926 |
+-------+-------------+----------------+--------+
|828927 | 0 | 0 | 828927 |
+-------+-------------+----------------+--------+
|828924 | 0 | 828931 | 828931 |
+-------+-------------+----------------+--------+
|828931 | 0 | 828933 | 828933 |
+-------+-------------+----------------+--------+
|828933 | 0 | 0 | 828933 |
+-------+-------------+----------------+--------+
你想静态排序? –
静态排序是什么意思? – andyts93
如何分类记录? – Sadikhasan