簡體   English   中英

如何將參數傳遞給函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM