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;