mysql 函数的输出不符合预期

我在员工表中共有 3 个条目,其表架构如下。 员工(ID,名字,姓氏,薪水) 表项如下。

ID FirstName LastName Salary
1  ABC       abc      10000
2  PQR       pqr      2000
3  XYZ       xyz      19000

我创建了一个函数 getFullName 如下。

Delimiter $$
Create Function getNamae(d_id INT) Returns varchar(200) deterministic
Begin 
   Declare full_name varchar(200) Default "";
   select concat(FirstName,LastName) INTO full_name from Employee where ID=d_id;
   Return full_name;
END $$

我如下调用了这个函数

Select getNamae(2) as full_name 
from Employee

但是我得到了 3 次输出 PQRpqr。

不应该只输出一次 PQRpqr 吗?

请谁能告诉我为什么会发生这种情况。我是初学者,无法理解。

hpsheng 回答:mysql 函数的输出不符合预期

如果您只想要员工 2 的姓名,则无需从表中进行选择。就用

SELECT getNamae(2) as full_name;

当您使用 from Employee 时,它会为表格的每一行调用该函数。

,

查询应该是这样的

Select getNamae(2) as full_name;
,

我会推荐一种不同的方法。在 MySQL 中,您可以在表中创建虚拟列,虚拟列的值是计算的,很像 Microsoft Excel 中的公式。

检查 this page in the documentation 最底部的示例 - 这正是您的用例,连接了名字和姓氏。

本文链接:https://www.f2er.com/18075.html

大家都在问