Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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_Stored Procedures - Fatal编程技术网

如何在MySQL中将查询中的第一行选择为过程变量

如何在MySQL中将查询中的第一行选择为过程变量,mysql,stored-procedures,Mysql,Stored Procedures,这是一个很糟糕的例子,但很容易由幼稚的编码导致。。。在我的测试中,如果返回多行,那么如何将第一行返回到变量中?您只需要一个分数吗 DECLARE topScorer INT default 0; SELECT id INTO topScorer FROM game_player WHERE game_player.score = (SELECT max(score) FROM game_player) 更新: 鲁福爵士是对的,上面的代码现在已经更正。你只需要一分吗 DECLARE topSc

这是一个很糟糕的例子,但很容易由幼稚的编码导致。。。在我的测试中,如果返回多行,那么如何将第一行返回到变量中?

您只需要一个分数吗

DECLARE topScorer INT default 0;

SELECT id INTO topScorer FROM game_player
WHERE game_player.score = (SELECT max(score) FROM game_player)
更新:
鲁福爵士是对的,上面的代码现在已经更正。

你只需要一分吗

DECLARE topScorer INT default 0;

SELECT id INTO topScorer FROM game_player
WHERE game_player.score = (SELECT max(score) FROM game_player)
更新:
鲁福爵士是对的,上面的代码现在已经更正。

使用
限制x
确保您只收到查询中的
x

在这种情况下,您只希望获得
1
行:

SELECT id 
  INTO topScorer 
  FROM game_player
 WHERE game_player.score = (   SELECT max(score) as maxScore 
                                 FROM game_player 
                                 ) LIMIT 1

作为一个可行的替代方案,您也可以使用此

SELECT id 
  INTO topScorer 
  FROM game_player
 WHERE game_player.score = ( SELECT max(score) 
                               FROM game_player )
 LIMIT 1

使用
限制x
确保您只从查询中接收
x

在这种情况下,您只希望获得
1
行:

SELECT id 
  INTO topScorer 
  FROM game_player
 WHERE game_player.score = (   SELECT max(score) as maxScore 
                                 FROM game_player 
                                 ) LIMIT 1

作为一个可行的替代方案,您也可以使用此

SELECT id 
  INTO topScorer 
  FROM game_player
 WHERE game_player.score = ( SELECT max(score) 
                               FROM game_player )
 LIMIT 1

在子查询中应用限制,以便从子查询中仅获取1个值

  SELECT id 
    INTO topScorer 
    FROM game_player
ORDER BY score DESC
   LIMIT 1
或从下面使用的子查询中获取多个值:

SELECT id 
  INTO topScorer 
  FROM game_player
 WHERE game_player.score = ( SELECT max(score) 
                               FROM game_player  LIMIT 1 );

在子查询中应用限制以从子查询中仅获取1个值

  SELECT id 
    INTO topScorer 
    FROM game_player
ORDER BY score DESC
   LIMIT 1
或从下面使用的子查询中获取多个值:

SELECT id 
  INTO topScorer 
  FROM game_player
 WHERE game_player.score = ( SELECT max(score) 
                               FROM game_player  LIMIT 1 );
1) 在SP中声明变量:

SELECT id 
  INTO topScorer 
  FROM game_player
 WHERE game_player.score in ( SELECT max(score) 
                               FROM game_player );
2) 我们需要两个查询,第一个用于将ID分配给变量,第二个用于只选择前1个记录表单表。在第一个查询的where子句中,我们将ID与内部查询的结果进行比较:

declare @CourseID int 
set @CourseID = 0
3) 现在检查变量值:

SELECT @CourseID = ID FROM Course ID = ( Select Top 1 ID from Course ) 
1) 在SP中声明变量:

SELECT id 
  INTO topScorer 
  FROM game_player
 WHERE game_player.score in ( SELECT max(score) 
                               FROM game_player );
2) 我们需要两个查询,第一个用于将ID分配给变量,第二个用于只选择前1个记录表单表。在第一个查询的where子句中,我们将ID与内部查询的结果进行比较:

declare @CourseID int 
set @CourseID = 0
3) 现在检查变量值:

SELECT @CourseID = ID FROM Course ID = ( Select Top 1 ID from Course ) 

可以在选择语句中添加“限制1”;o) 以前从未见过该关键字,neatmaybe可以在select语句中添加“LIMIT 1”;o) 以前从未见过该关键字,neat
从表中选择max(列)
将返回一行或无行<代码>限制此语句无效
从表中选择最大值(列)
将返回一行或无行
LIMIT
此语句不可用。您为什么要限制只能返回一行或无行的语句,因为“从表中选择最大值(列)”可以吗?和“SELECT…INTO…”应该只返回最多1行,否则您将得到一个错误。为什么将只能返回一行或无行的语句限制为“SELECT max(Column)FROM Table”呢?和“SELECT…INTO…”应最多返回1行,否则将出现错误