Mysql 如何通过包含重复ID的ID列表获取行?
我有一个Mysql 如何通过包含重复ID的ID列表获取行?,mysql,sql,Mysql,Sql,我有一个ids的列表 1,1,2,3,3,3,1 并希望计算上述行的列总和。如果我在中使用作为 SELECT SUM(score) FROM table1 WHERE id IN(1,1,2,3,3,3,1) 它将是三行(唯一ID)的总和,但我也需要包括重复的行(7行1,1,2,3,3,1) 编辑:表格结构简单。差不多 CREATE TABLE table1 ( id int(11) unsigned NOT NULL AUTO_INCREMENT, score int(11), PRIMA
id
s的列表
1,1,2,3,3,3,1
并希望计算上述行的列总和。如果我在中使用作为
SELECT SUM(score) FROM table1 WHERE id IN(1,1,2,3,3,3,1)
它将是三行(唯一ID)的总和,但我也需要包括重复的行(7行1,1,2,3,3,1
)
编辑:表格结构简单。差不多
CREATE TABLE table1
(
id int(11) unsigned NOT NULL AUTO_INCREMENT,
score int(11),
PRIMARY KEY (id)
) ENGINE=InnoDB
您需要创建一个包含这些id
值的派生表,然后JOIN
将其连接到table1
以为列表中的每个值实例生成行。然后可以将这些行相加:
SELECT SUM(score)
FROM (SELECT 1 AS id UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
UNION ALL SELECT 3 UNION ALL SELECT 3 UNION ALL SELECT 1) ids
JOIN table1 t1 ON t1.id = ids.id
您需要创建一个包含这些id
值的派生表,然后将其加入到表1
中,为列表中的每个值实例生成行。然后可以将这些行相加:
SELECT SUM(score)
FROM (SELECT 1 AS id UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
UNION ALL SELECT 3 UNION ALL SELECT 3 UNION ALL SELECT 1) ids
JOIN table1 t1 ON t1.id = ids.id
您不能使用
中的
条件执行此操作,因为中的将您的项目视为一组(即确保唯一性)
您可以通过连接到一个UNION ALL
来生成所需的结果,如下所示:
1,1,2,3,3,3,1
或
您不能使用中的
条件执行此操作,因为
中的将您的项目视为一个集合(即确保唯一性)
您可以通过连接到一个UNION ALL
来生成所需的结果,如下所示:
1,1,2,3,3,3,1
或
我们可以看看表1中谷歌机器人的定义吗?Please@zip我在问题中添加了表格结构。在(1,2,3)和(1,1,2,3,3,3,1)中的和的中的id的结果将与SUM()相同。@devsiodera我知道这一点。这是我的问题,我应该做什么来代替
中的,以获得1,1,2,3,3,3,1
。我们可以看看表1中的GoogleBot定义吗?Please@zip我在问题中添加了表格结构。在(1,2,3)和(1,1,2,3,3,3,1)中的和的中的id的结果将与SUM()相同。@devsiodera我知道这一点。这是我的问题,我应该做什么来代替
中的,以获得1,1,2,3,3,3,1
。
CREATE TABLE #TempIDs
(
ID int
)
INSERT INTO #TempIDs (1)
INSERT INTO #TempIDs (1)
INSERT INTO #TempIDs (2)
INSERT INTO #TempIDs (3)
INSERT INTO #TempIDs (3)
INSERT INTO #TempIDs (3)
INSERT INTO #TempIDs (1)
Select SUM(Score) From Table_1
INNER JOIN #TempIDs t n Table_1.ID = t.ID;