我在同一个表中合并了两列。我正在关注answer in this thread。
我有一个看起来像这样的表,var
作为合并变量(它有一个id
但不包括在这里):
var1 var2 var
1 1
2 2
8 8
10 10
我使用下面的代码获取相关列的所有值,它们完美地运行。这两个相关的列组合成一个具有各自值的列。
# code1
SELECT ID, "var1" AS var, var1 AS val FROM source
UNION ALL
SELECT ID, "var2" AS var, var2 AS val FROM source
接下来,我需要获得每行和每列组合的唯一值:
# code2
SELECT ID, First(val) AS FirstOfVal
FROM (
SELECT DISTINCT ID, val
FROM code1
WHERE val IS NOT NULL
)
GROUP BY ID
HAVING COUNT(*) = 1
在code2
我希望得到一个表格,其中FirstOfVal
列填充了值,但在我的情况下没有内容。
我该如何解决这个问题?
我尝试在其他列的组合中使用它,它完美地工作除了这个我正在修改的列。我能想到这些列的唯一区别是我有一个问题合并是它们包含很多空行(如上所示),每列都有自己的值,没有两行的列都有这两个值。
答案 0 :(得分:0)
好的,我终于解决了!
以下是此特例的步骤:
SELECT
id
和所需的列。请注意,这要求不的列都包含值(我没有对包含值的两列进行测试,无论是否相同)。
# query1
SELECT id, col1 & col2 AS merged
FROM table_name;
将查询结果插入到临时表中以确保安全性(最好将其保存,以免遇到错误)。
# query2
SELECT * INTO temp
FROM query1
WHERE FirstOfVal;
将临时表的内容插入主表。
UPDATE table_name
INNER JOIN temp ON table_name.id = temp.id
SET table_name.merged = [temp].[merged];
现在,您已将合并的列放入源表中。