我在MySQL中有这个程序(不用费心去弄清楚它的作用,只需看看光标打开的部分)
/* PROCEDURE 1 : Post notification */
DROP PROCEDURE IF EXISTS AddNotificationOnPosts;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `AddNotificationOnPosts`(arg_from_user INT(11),arg_on_post_id INT(11),arg_in_group_id INT(11))
BEGIN
DECLARE num_rows INT DEFAULT NULL;
DECLARE insert_result INT DEFAULT NULL;
DECLARE done INT DEFAULT 0;
DECLARE var_user_id INT DEFAULT NULL;
DECLARE c1 CURSOR FOR
SELECT user_id
FROM user_rights
WHERE user_rights.right = 101 AND user_rights.group_id = arg_in_group_id
ORDER BY user_id DESC;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
IF(arg_from_user IS NULL OR arg_from_user = '') …Run Code Online (Sandbox Code Playgroud) 我有一个问题understandint 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
...
Run Code Online (Sandbox Code Playgroud)
结果=> 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
Run Code Online (Sandbox Code Playgroud)
结果=> http://sqlfiddle.com/#!2/b2a858/7
所以1和2工作得很好.
3 - 之后我想按列not_existing排序
结果=> http://sqlfiddle.com/#!2/b2a858/5
我不知道它到底做了什么,但我看不到任何结果......我只想要那个
dech_rap_bus V300
其中NOT_EXISTING列是1是在端部,并且是多个时NOT_EXISTING = 1到它们全部进行排序,但在表的末尾.
我认为2个选择的联盟会帮助我
/* Selecting all data where not_existing is not 1 or NULL ---> working good! */
(
SELECT
*
FROM
atm_mti_view
WHERE …Run Code Online (Sandbox Code Playgroud) 我有这样的查询
SELECT user_id FROM user_rights ORDER BY user_id DESC;
Run Code Online (Sandbox Code Playgroud)
为什么它给了我那些乱糟糟的数字?
USER_ID
4
4
4
4
3
3
21
21
21
21
21
21
20
20
Run Code Online (Sandbox Code Playgroud)
它没有按预期排序数字.
证明:http://sqlfiddle.com/#!2/c753a/1
我明白他们可能按字母或数字排序,买我不明白为什么这个结果如此奇怪......