Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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中声明同一语句中的变量?_Mysql_Mysql Variables - Fatal编程技术网

如何在MySQL中声明同一语句中的变量?

如何在MySQL中声明同一语句中的变量?,mysql,mysql-variables,Mysql,Mysql Variables,如何在MySQL中创建可以在同一语句中引用的变量 这也适用于UPDATE和INSERT语句吗 我问这个问题是因为我得到了很多SQL文本文件,在这些文件中,我使用MySQL Workbench中的Ctrl-Enter执行单个命令。如果是多个语句,我必须在按Ctrl-Enter键之前选择要执行的命令。这更复杂,也更容易出错 在有人问之前:这是一个单用户的私有数据库,我使用这些脚本直接修改数据,通过GUI进行编辑需要很长时间 我刚刚决定用java程序包装更复杂的代码。这是一个好决定。对于不想编写jav

如何在MySQL中创建可以在同一语句中引用的变量

这也适用于UPDATE和INSERT语句吗

我问这个问题是因为我得到了很多SQL文本文件,在这些文件中,我使用MySQL Workbench中的Ctrl-Enter执行单个命令。如果是多个语句,我必须在按Ctrl-Enter键之前选择要执行的命令。这更复杂,也更容易出错

在有人问之前:这是一个单用户的私有数据库,我使用这些脚本直接修改数据,通过GUI进行编辑需要很长时间


我刚刚决定用java程序包装更复杂的代码。这是一个好决定。对于不想编写java代码的不太复杂的问题,我仍然需要这个问题的解决方案

我在网上找不到解决办法。但结果是。。。相当直接。 只需创建一条语句来包装您的语句:

select *, @variable:='Value' from (
    select * from your_table inner where @variable=inner.column
) as outer

不清楚您为什么需要在同一声明中这样做。运行两条语句很容易,而且代码更容易编写和理解。您应该始终考虑如何成功地在代码上工作的开发人员将理解和维护它。
SET @variable = 'Value';

SELECT ... FROM your_table WHERE a_column = @variable;
如果您确实需要在一份声明中这样做,我会这样做:

SELECT ... FROM your_table 
CROSS JOIN (SELECT @variable := 'Value') AS _init
WHERE a_column = @variable;

通过在派生表中执行此操作,它只执行一次赋值。如果您在解决方案中显示的选择列表中执行此操作,则它执行赋值的次数与内部查询返回的行数相同。如果赋值为常量,这不是什么大问题,但是如果变量被赋值为代价高昂的表达式的结果,则速度会很慢。

我有一个包含多个语句的文本文件。我通过按Ctrl-Enter手动执行此文件中的单个语句。如果是多个语句,我必须先选择要执行的文本。-但我会尝试你的解决方案。@JPT你的问题中没有任何一个出现。你们都是对的。我用Java包装了SQL,现在我有了简单的SQL语句和对发生的事情的完全控制;