Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何通过包含重复ID的ID列表获取行?_Mysql_Sql - Fatal编程技术网

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;