[英]How can I pass a parameter to a 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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.