如何在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行,否则将出现错误