我有一个问题。
我正在开发一个SQL查询,它将一个表中的两列连接到一列,并按升序对该结果进行排序(按该列)。
因此,我们假设我们有一个包含自动入侵 ID 的表格。在同一个表中,我们有列 parentID (可以是0或者是现有ID)。
ID | parentID | column1 | column2 | number
-------------------------------------------
1 | 0 | data | data | 1
2 | 0 | data | data | 1
3 | 1 | data | data | 1
4 | 2 | data | data | 1
5 | 0 | data | data | 1
6 | 4 | data | data | 1
7 | 1 | data | data | 1
我希望获得结果,其中 ID 和 parentID 将被连接在一起并进行排序。所以表格看起来像。 (如果 parentID 为0,则按 ID 排序)
ID | parentID | JOINEDCOLUMN | column1 | column2 | number
-------------------------------------------
1 | 0 | 1 | data | data | 1
3 | 1 | 1 | data | data | 1
7 | 1 | 1 | data | data | 1
2 | 0 | 2 | data | data | 1
4 | 2 | 2 | data | data | 1
6 | 4 | 4 | data | data | 1
5 | 0 | 5 | data | data | 1
(我不想要来自JOINED COLUMN的数据,但是排序表是结果 - > PHP ...)
我有一个查询 - 这没有按预期工作 - >如果父ID不是0,则返回两次。
SELECT
id as JOINEDCOLUMN, parentID, column1, column2, column3
FROM table
WHERE number = 1
UNION
SELECT
parentID, parentID, column1, column2, column3
FROM table
WHERE number = 1 AND parentID <> 0
ORDER BY `JOINEDCOLUMN` ASC