Sql 组合多个选择函数,其中两者都有一个where

Sql 组合多个选择函数,其中两者都有一个where,sql,Sql,我正在尝试规范化从excel工作表输入的数据。我提取数据的文件中有一组列sibling1_name、sibling1_age、sibling1_impacted等,最多包含4个兄弟姐妹、4个孩子、4个亲属等。我想将其全部输入一个包含名称、年龄、影响和关系的新表中。我找到了一种正确输入第一个兄弟姐妹的方法(见下文),但我不确定如何将其他兄弟姐妹添加到中。有什么建议吗 INSERT INTO Family (ID, Name,

我正在尝试规范化从excel工作表输入的数据。我提取数据的文件中有一组列sibling1_name、sibling1_age、sibling1_impacted等,最多包含4个兄弟姐妹、4个孩子、4个亲属等。我想将其全部输入一个包含名称、年龄、影响和关系的新表中。我找到了一种正确输入第一个兄弟姐妹的方法(见下文),但我不确定如何将其他兄弟姐妹添加到中。有什么建议吗

INSERT INTO Family
            (ID,
             Name,
             Age,
             Affected,
             Relationship)
SELECT ExcelPatients.id,
       ExcelPatients.sibling1_name     AS Name,
       ExcelPatients.sibling1_age      AS Age,
       ExcelPatients.sibling1_affected AS Affected,
       "Sibling"
FROM   ExcelPatients
WHERE  (( ( ExcelPatients.Sibling1_name ) IS NOT NULL ))
       AND ExcelPatients.id NOT IN (SELECT DISTINCT ID  AND Name
                                    FROM   Family); 

没有看到数据,我不知道是全部联合还是联合是正确的选择。如果名称只能在4个同级列中的一列中,则使用UNION ALL;如果名称可以重复,则使用UNION。因为您正在清理来自另一个源的数据,所以联合可能是更安全但速度较慢的选择。不存在往往是SQL Server中最快的比较,这就是我选择它的原因

这是什么样的SQL?“ExcelPatients”是SQL数据库中的一个表吗?这是您的实际代码吗?如果是这样的话,它有效吗<代码>从族中选择不同的ID和名称似乎有点奇怪。是的,这就是它从的表。所有数据都是从Excel工作表导入到该表中的,在该工作表中,它位于我在子查询中使用
NOT in/in
时提到的列中,子查询只能有一个字段。而且,我觉得您的子查询语法似乎有问题。这是怎么回事?您的数据库管理系统是什么?您使用的是哪个数据库系统?Microsoft SQL Server?MySQL?神谕博士后?请回答这个问题!还有一个问题,有没有办法让它将所有这些数据输入到现有的表中?将insert添加到顶部的stuff中
INSERT INTO Family
            (ID,
             Name,
             Age,
             Affected,
             Relationship)

SELECoT ExcelPatients.id, ExcelPatients.sibling1_name AS Name, 
ExcelPatients.sibling1_age AS Age, 
ExcelPatients.sibling1_affected AS Affected, "Sibling"
FROM ExcelPatients
WHERE (((ExcelPatients.Sibling1_name) Is Not Null))
AND NOT EXISTS  (SELECT DISTINCT ID FROM Family where family.id =  ExcelPatients.id and Family.name =  ExcelPatients.sibling1_name)

UNION

SELECT ExcelPatients.id, ExcelPatients.sibling2_name AS Name, 
ExcelPatients.sibling2_age AS Age, 
ExcelPatients.sibling2_affected AS Affected, "Sibling"
FROM ExcelPatients
WHERE (((ExcelPatients.Sibling2_name) Is Not Null))
AND NOT EXISTS  (SELECT DISTINCT ID FROM Family where family.id =  ExcelPatients.id and Family.name =  ExcelPatients.sibling2_name)

UNION

SELECT ExcelPatients.id, ExcelPatients.sibling3_name AS Name, 
ExcelPatients.sibling3_age AS Age, 
ExcelPatients.sibling3_affected AS Affected, "Sibling"
FROM ExcelPatients
WHERE (((ExcelPatients.Sibling3_name) Is Not Null))
AND NOT EXISTS  (SELECT DISTINCT ID FROM Family where family.id =  ExcelPatients.id and Family.name =  ExcelPatients.sibling3_name)

UNION 

SELECT ExcelPatients.id, ExcelPatients.sibling4_name AS Name, 
ExcelPatients.sibling4_age AS Age, 
ExcelPatients.sibling4_affected AS Affected, "Sibling"
FROM ExcelPatients
WHERE (((ExcelPatients.Sibling4_name) Is Not Null))
AND NOT EXISTS  (SELECT DISTINCT ID FROM Family where family.id =  ExcelPatients.id and Family.name =  ExcelPatients.sibling4_name)