MariaDB循环未显示查询结果

时间:2019-02-15 00:08:47

标签: mysql sql mariadb adminer

我有一个简单的查询:

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

当我尝试加入一会儿或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.

还有其他我想念的东西吗?谢谢。

2 个答案:

答案 0 :(得分:1)

为什么要使用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不是必需的。

答案 1 :(得分:0)

所问问题的答案在DO的定义中。它被定义为执行查询,然后丢弃结果。