我ORDER BY
在MySQL
. 我必须按 3 个标准对表格进行排序
1 - 首先我想按TYPE_OF_WORK排序,所以所有数据都必须按字母顺序排列,比如
dech_rap_bus
dech_rap_bus
ger_dem_dech_bus
ger_dem_dech_bus
ger_dem_stp_pp
...
结果 => http://sqlfiddle.com/#!2/b2a858/6
2 - 第二我想按PROJECT_VERSION排序,所以所有数据都必须按字母顺序排列,但要遵守 1 个标准,例如
dech_rap_bus V123-V1234
dech_rap_bus V300
ger_dem_dech_bus V123-V1234
ger_dem_dech_bus V300
ger_dem_stp_pp V123-V1234
结果 => http://sqlfiddle.com/#!2/b2a858/7
所以1和2工作得很好。
3 - 在此之后我想按列not_existing排序
结果 => http://sqlfiddle.com/#!2/b2a858/5
我不知道它到底做了什么,但我看不到任何结果......我只是想要那个
dec_rap_bus V300
其中NOT_EXISTING列是1放在最后,什么时候有更多NOT_EXISTING = 1来对它们进行排序,但在表的末尾。
我对自己说,2 个选择的 UNION 会帮助我
/* Selecting all data where not_existing is not 1 or NULL ---> working good! */
(
SELECT
*
FROM
atm_mti_view
WHERE
project_function='FRS01' AND
on_big_project_id = 12 AND
(not_existing != 1 OR not_existing IS NULL)
ORDER BY
type_of_work ASC,
project_version ASC
)
UNION
/* Selecting all data where not_existing is 1 ---> working good! */
(
SELECT
*
FROM
atm_mti_view
WHERE
project_function='FRS01' AND
on_big_project_id = 12 AND
not_existing = 1
ORDER BY
type_of_work ASC,
project_version ASC
)
但是这段代码的作用是把不存在的 dech_rap_bus 放在最后,很好,但是它弄乱了版本排序,为什么???
在这里查看结果 => http://sqlfiddle.com/#!2/b2a858/8
这是为什么?我只想合并两个选择结果,我做错了什么?