Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 、Order by子句不在“选择列表”中_Mysql_Sql Order By_Distinct - Fatal编程技术网

Mysql 、Order by子句不在“选择列表”中

Mysql 、Order by子句不在“选择列表”中,mysql,sql-order-by,distinct,Mysql,Sql Order By,Distinct,我正在努力创建自己的自动增量块。你能帮我重新组织下面的示例吗?适用于IF布尔表达式中的TRUE,不适用于FALSE 3065-order by子句的表达式1不在select list references列中…我在Web上发现了一些解决方案,但我无法在我的示例中实现它们。我希望避免使用c挂起任何更深层次的东西,如sql_mode=和其他。 例如: SET temp_id:=从日常_操作中选择MAXid+1;IMHO更好。在任何情况下,该方法都不是线程安全的:对于多个并发请求,您将具有相同的tem

我正在努力创建自己的自动增量块。你能帮我重新组织下面的示例吗?适用于IF布尔表达式中的TRUE,不适用于FALSE 3065-order by子句的表达式1不在select list references列中…我在Web上发现了一些解决方案,但我无法在我的示例中实现它们。我希望避免使用c挂起任何更深层次的东西,如sql_mode=和其他。 例如:


SET temp_id:=从日常_操作中选择MAXid+1;IMHO更好。在任何情况下,该方法都不是线程安全的:对于多个并发请求,您将具有相同的temp_id。这一点很好。那么在这种情况下,常见的模式是什么?常见的模式是什么?您应该使用自动增量、GUID或锁表。您的问题不清楚是什么在您尝试这样做时,没有任何建议。我正在编写一个自动递增复合键的过程,这就是我不使用内置选项的原因。在最后的评论中,我指的是如何在这种情况下正确防止多个并发请求,但这会导致其他主题。我将搜索它。谢谢。
DECLARE temp_id INT;
IF NOT EXISTS(SELECT 1 FROM operation_table WHERE client_id = 'some client') THEN
    SET temp_id := 1;
ELSE
    SET temp_id := (SELECT DISTINCT id FROM daily_operation ORDER BY id DESC LIMIT 1) + 1;
END IF;
SET id := temp_id;