mysql - 如何将参数传递给函数?

标签 mysql sql function

这是我的表结构:

-- 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/

相关文章:

php - 将用户配置文件信息与用户登录信息保存在同一数据库中

sql - 动态 SQL - 检查语法和语义

MYSQL 全文匹配不返回预期结果

c# - SQL 表中的搜索结果

php - PHP/MySQL 动态创建 WHERE 子句

MySQL - 添加多个派生表时查询缓慢 - 优化

mysql - 经理级 SQL 事务

jquery - 如何设置jquery或javascript中函数调用的顺序或优先级?

function - 返回列表的立方体函数的 CLISP 递归幂

javascript - 在 Javascript 中扩展对象