我有一个简单的问题:

SELECT COUNT(ud.UserID), COUNT(DISTINCT ud.ProductID)
FROM users_data AS ud
    JOIN products AS t ON t.ID = ud.ProductID
WHERE ud.UserID = '3'

结果是:
COUNT(ud.UserID)    COUNT(DISTINCT ud.ProductID)
519                 425

当我试图包含在while或for循环中时:
DELIMITER //

SET @i = 0;
FOR i IN 1..10
DO SELECT COUNT(ud.UserID), COUNT(DISTINCT ud.ProductID)
  FROM users_data AS ud
    JOIN products AS t ON t.ID = ud.ProductID
  WHERE ud.UserID = (i)
END FOR
//

我没有输出,除了:
Query executed OK, 0 rows affected.

还有什么我错了吗?谢谢您。

最佳答案

为什么要使用loop?作为一个简单的查询,这样做要好得多:

SELECT ud.UserId, COUNT(*), COUNT(DISTINCT ud.ProductID)
FROM users_data ud
GROUP BY ud.UserID;

如果需要特定用户,可以使用WHERE子句:
SELECT ud.UserId, COUNT(*), COUNT(DISTINCT ud.ProductID)
FROM users_data ud
WHERE ud.UserId IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
GROUP BY ud.UserID;

注:我不认为JOIN是必要的。

关于mysql - MariaDB循环未显示查询结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54700958/

10-11 03:37