【发布时间】:2018-05-08 11:26:49
【问题描述】:
我需要连接多个表中多个列的值
前
userid username answeredquestion1 answeredquestion2
1 aa 1 1
2 bb 1 0
我需要结果
userid username question name response
1 aa answertoquestion1 1
2 bb answertoquestion2 0
如果值为null,则不应从第一个表中复制数据
我使用了以下命令,但它不起作用
INSERT ALL
WHEN AnswerToQuestion1 > 0 --and userid not in (Select Userid from b) --and AnswerToQuestion1 not in (Select AnswerToQuestion from b)
THEN
INTO b (userid, username, AnswerToQuestion) VALUES (UserID, UserName, AnswerToQuestion1)
WHEN AnswerToQuestion2 > 0 --and userid not in (Select Userid from b) --and AnswerToQuestion2 not in (Select AnswerToQuestion from b)
THEN
INTO b (userid, username, AnswerToQuestion) VALUES (UserID, UserName, AnswerToQuestion2)
WHEN AnswerToQuestion3 > 0 --and userid not in (Select Userid from b) --and AnswerToQuestion3 not in (Select AnswerToQuestion from b)
THEN
INTO b (userid, username, AnswerToQuestion) VALUES (UserID, UserName, AnswerToQuestion3)
SELECT UserID, UserName, AnswerToQuestion1, AnswerToQuestion2, AnswerToQuestion3
FROM a
where not exists (SELECT userid, ANSWERTOQUESTION FROM b where b.userid=a.userid and
a.ANSWERTOQUESTION2 = b.ANSWERTOQUESTION)
(或)
insert into b
(select userID,username,AnswerToQuestion2 as AnswerToQuestion from a where
union all
select userID,username,AnswerToQuestion1 as AnswerToQuestion from a)
这将重复数据,这意味着重复值重复
我需要满足的条件是需要检查第一个表中的 4 列和第二个表中的 3 列。 谁能给我建议解决方案
提前致谢
【问题讨论】:
-
这是mysql、oracle还是Sql Server?
INSERT ALL WHEN不是 SQL Server 语法,但其他人需要知道他们在处理什么。它们都是不同的数据引擎。 -
@yogesh。请正确更新标签,以便我们提供帮助。
标签: mysql oracle join where-clause