这是我的表结构:
-- users
+----+--------+
| id | name |
+----+--------+
| 1 | Jack |
| 2 | Peter |
| 3 | Martin |
+----+--------+
-- reputations
+----+-------+---------+
| id | repo | user_id |
+----+-------+---------+
| 1 | 5 | 2 |
| 2 | 10 | 1 |
| 3 | -2 | 3 |
| 3 | 5 | 2 |
+----+-------+---------+
我还有一个这样的函数:
DROP FUNCTION IF EXISTS user_repo //
CREATE FUNCTION user_repo(user_id INT) RETURNS INT
BEGIN
DECLARE repo INT;
SELECT SUM(repo) INTO repo FROM reputations WHERE user_id = user_id;
RETURN repo;
END;//
当我像SELECT user_repo(2)
这样调用它时,它可以正常工作(它返回10
,(5 + 5
) )。现在我需要在另一个查询中使用该函数。我想要实现的只是一份具有声誉的用户列表。所以这是预期结果:
+----+--------+------+
| id | name | repo |
+----+--------+------+
| 1 | Jack | 10 |
| 2 | Peter | 10 |
| 3 | Martin | -2 |
+----+--------+------+
我怎样才能得到它?我的意思是如何在其中使用该定义的函数?
SELECT u.*, /* that function */ FROM users WHERE 1;
最佳答案
试试这个
SELECT u.*, user_repo(u.id) as repo FROM users u WHERE 1;
关于mysql - 如何将参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45261518/