我有一个简单的查询:
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.
还有其他我想念的东西吗?谢谢。
答案 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
的定义中。它被定义为执行查询,然后丢弃结果。