Sql 使用该示例数据生成sult。请回答你的问题。哦,好吧,因为我在连接中使用了SELECT,它只会显示输出。如果我想合并这些表,那会是另一个类似UPDATE的命令吗?似乎更新要求两个表都已经有了列,因此,例如,无法使用更新联接将table2.typetext添
Sql 使用该示例数据生成sult。请回答你的问题。哦,好吧,因为我在连接中使用了SELECT,它只会显示输出。如果我想合并这些表,那会是另一个类似UPDATE的命令吗?似乎更新要求两个表都已经有了列,因此,例如,无法使用更新联接将table2.typetext添,sql,postgresql,Sql,Postgresql,使用该示例数据生成sult。请回答你的问题。哦,好吧,因为我在连接中使用了SELECT,它只会显示输出。如果我想合并这些表,那会是另一个类似UPDATE的命令吗?似乎更新要求两个表都已经有了列,因此,例如,无法使用更新联接将table2.typetext添加到table1?我不知道复制可以使用任何东西,除了一个表,我一定是误解了文件。不需要创建临时表非常好!ASELECT从不更改任何表格内容。所以,是的,你错了。它将选择的结果中的集合连接在一起。但是由于COPY可以进行任意查询,因此不需要使用临
使用该示例数据生成sult。请回答你的问题。哦,好吧,因为我在连接中使用了SELECT,它只会显示输出。如果我想合并这些表,那会是另一个类似UPDATE的命令吗?似乎更新要求两个表都已经有了列,因此,例如,无法使用更新联接将table2.typetext添加到table1?我不知道复制可以使用任何东西,除了一个表,我一定是误解了文件。不需要创建临时表非常好!A
SELECT
从不更改任何表格内容。所以,是的,你错了。它将选择的结果中的集合连接在一起。但是由于COPY
可以进行任意查询,因此不需要使用临时表。不过,为了帮助您进行查询,还需要更多详细信息。您应该发布所有表的示例数据,并使用该示例数据发布所需的结果。请回答你的问题。哦,好吧,因为我在连接中使用了SELECT,它只会显示输出。如果我想合并这些表,那会是另一个类似UPDATE的命令吗?似乎更新要求两个表都已经有了列,因此,例如,无法使用更新联接将table2.typetext添加到table1?我不知道复制可以使用任何东西,除了一个表,我一定是误解了文件。不需要创建临时表非常好!因此,在本例中,要导出结果,命令将是``将SELECT table1.id、table1.data1、table1.data2、table1.data3、table2.data1、table2.data2、table3.data1从table1左联接table2上的table2.data2=table2.id左联接table3上的table2.data1=table3.id复制到'/path/for/file',格式为CSV``因此在本例中,要导出结果,命令将是“复制选择table1.id、table1.data1、table1.data2、table1.data3、table2.data1、table2.data2、,table3.data1从table1左连接table1上的table2.data2=table2.id左连接table2上的table3.data1=table3.id到“/path/for/file”,格式为CSV``谢谢这帮了大忙,确实达到了我的预期效果。另一个问题,如果我要提出一个全新的问题,没什么大不了的。我想知道你是否能为我指出一个正确的方向,让我进一步了解这一点。我需要一个新列,该列根据两个表是否具有相同的数据具有真/假值。例如,如果t1.formalid位于t4中,那么在生成的导出查询中,它将有一个新的列“unique”,对于不存在的条目为TRUE,对于存在的条目为FALSE。因为这是一个更新的结果,如果这需要一个临时表,对吗?@tbleader:听起来像是一个新问题。谢谢你,这帮了我很大的忙,确实达到了我的预期。另一个问题,如果我要提出一个全新的问题,没什么大不了的。我想知道你是否能为我指出一个正确的方向,让我进一步了解这一点。我需要一个新列,该列根据两个表是否具有相同的数据具有真/假值。例如,如果t1.formalid位于t4中,那么在生成的导出查询中,它将有一个新的列“unique”,对于不存在的条目为TRUE,对于存在的条目为FALSE。因为这是一个更新的结果,如果这需要一个临时表,对吗?@tbleader:听起来像是一个新问题。
Table1
-id (primary key)
-data1
-data2 (foreign key for Table2)
-data3
Table2
-id (primary key, Table1.data2 matches with this)
-data1 (foreign key for Table3)
-data2
Table3
-id (primary key, Table2.data1 matches with this)
-data1
-id
-table1.data1
-table1.data2
-table1.data3
-table2.data1
-table2.data2
-table3.data1
Database=# create temp table temp_table as select id,data1,data2,data3 from table1;
SELECT 71
table1
id formalID linkid textdata
3 3 3 [blank]
9 13 9 [blank]
1 1 10 [blank]
35 38 [blank] “sample text”
table2
id nameid typetext
3 3 [blank]
9 9 “Alpha”
10 1 “Beta”
table3
id nameText
3 “Sweet”
9 “Sour”
1 “Tangy”
end result:
formalID nameText typeText textdata
3 “Sweet” [blank] [blank]
13 “Sour” “Alpha” [blank]
1 “Tangy” “Beta” [blank]
38 [blank] [blank] “sample text”
SELECT t1.data1, t1.data3, t2.data2 as t2_data, t3.data1 as t3_data
FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.data2 = t2.id
LEFT JOIN Table3 t3 ON t2.data1 = t3.id
COPY
( SELECT t1.id
, t1.data1
, t1.data2
, t1.data3
, t2.data1
, t2.data2
, t3.data1
FROM table1 t1
LEFT JOIN table2 t2 ON t1.d2 = t2.id
LEFT JOIN table3 t3 ON t2.d1 = t3.id
)
TO 'path/to/filename'
WITH FORMAT CSV
SELECT
table1.id,
table1.data1,
table1.data2,
table1.data3,
table2.data1,
table2.data2,
table3.data1
FROM table1
LEFT JOIN table2 ON table1.data2 = table2.id
LEFT JOIN table3 ON table2.data1 = table3.id
LEFT JOIN table2 ON table1.data2 = table2.id
AND <condition>
LEFT JOIN table3 ON table2.data1 = table3.id
AND <condition>
SELECT t1.formalid,
t3.nametext,
t2.typetext,
t1.textdata
FROM table1 t1
LEFT JOIN table2 t2
ON t2.nameid = t1.id
LEFT JOIN table2 t3
ON t3.id = t1.id;
COPY (SELECT t1.formalid,
t3.nametext,
t2.typetext,
t1.textdata
FROM table1 t1
LEFT JOIN table2 t2
ON t2.nameid = t1.id
LEFT JOIN table2 t3
ON t3.id = t1.id)
TO '<path to the output file>'
WITH FORMAT csv;