我有两个数据库表
这是我的一个项目的点点滴滴。此查询比较两个表并将alter table脚本文本生成到“TODO”列中。
“TODO2”是更新查询脚本,用第二个表中的数据更新新列。为了加快alter table部分,您可以将“Default”部分与“Todo”分离,并为另一个“alter table”脚本生成脚本,该脚本在更新完成后仅设置默认值。
除了一些第三方工具之外,没有简单或优雅的方法可以做到这一点。
select string_agg(todo,'') as todo
,'update mytable1 set '|| string_agg(todo2,',') ||' from mytable2 where mytable1.id= mytable2.id' as todo2
from (
select
case
when table1.attname is null
then 'alter table '||'mytable1'||' add column '||table2.attname||' '||table2.datatype||' '||case when table2.default_value is null or table2.default_value ='' then ' ' else ' default ' || table2.default_value end || ';'
end as todo
,case
when table1.attname is null
then ' '|| table2.attname ||'='|| 'mytable2.'||table2.attname
end as todo2
from
(
SELECT attname
,pg_catalog.format_type(a.atttypid, a.atttypmod) as Datatype
,coalesce(d.adsrc,'') AS default_value
FROM pg_catalog.pg_attribute a
LEFT JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum)=(d.adrelid,d.adnum)
WHERE a.attnum > 0 AND NOT a.attisdropped
AND a.attrelid = ( SELECT c.oid
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname = 'mytable1' AND pg_catalog.pg_table_is_visible(c.oid)
)
)table1
full join
(
SELECT attname
,pg_catalog.format_type(a.atttypid, a.atttypmod) as Datatype
,coalesce(d.adsrc,'') AS default_value
FROM pg_catalog.pg_attribute a
LEFT JOIN pg_catalog.pg_attrdef d ON (a.attrelid, a.attnum)=(d.adrelid,d.adnum)
WHERE a.attnum > 0 AND NOT a.attisdropped
AND a.attrelid = ( SELECT c.oid
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname = 'mytable2' AND pg_catalog.pg_table_is_visible(c.oid)
)
)table2 on (table1.attname = table2.attname)
where table1.attname is null) q1
我在数据库中有一个包含(id、日期、类别、行、持续时间)的表,我每天都有许多注册表,例如(1,12/12/2014,cat1,ligne1,12)(2,12/2014,cat2,ligne1,10)(3,12/12/2014,cat3,ligne2,23) (4,13/12/2014,cat1,LINGE1,10)(5,13/12/2014,cat2,LINGE1,20)(6,13/12/2014
我在从一个表中插入一个列的值作为另一个表中的列时遇到了麻烦。我在col1中有一些值的表A:和另一个列等于col1值的表B。 我想把表A,col1中的其余值添加为表B中的列。请帮助我解决我的问题。我正在使用SQL server 2012。
很抱歉这太模糊了,但代码太多了。 这是一个五卡梭哈游戏。基本上,我试图将对象添加到另一个数组列表中的数组列表中。 这是我创建玩家数组并将手类中的数组添加到其中的地方,至少我认为这就是正在发生的事情: 稍后,我尝试在循环交易中将牌添加到玩家阵列中的手牌阵列中。由于有五张牌,第一个循环进行了五次。第二个是玩家数组的长度(玩家总数),每次应该添加一张卡。 Deck类中有一个deal方法,由以下方法初始化
问题内容: 如何测试一个列表是否包含另一个列表(即它是一个连续的子序列)。假设有一个名为contains的函数: 编辑: 问题答案: 这是我的版本: 正如安德鲁·贾菲(Andrew Jaffe)在他的评论中指出的那样,它返回一个元组(start,end + 1),因为我认为这更像pythonic。它不对任何子列表进行切片,因此应该相当有效。 新手感兴趣的一点是,它使用了for语句上的else子句-
问题内容: 我有两个带有不同对象的列表。 我想检查list2中的元素是否存在于list2中,基于特定的属性(Object1和Object2具有(以及其他),一个共有属性(类型为Long),名为attributeSame)。 现在,我这样做是这样的: 但是我认为有一种更好,更快的方法可以做到这一点:)有人可以提出吗? 谢谢! 问题答案: 如果只需要测试基本相等性,则可以使用基本JDK来完成,而无需在
我有两个不同对象的列表。 我想根据特定的属性(Object1和Object2有一个共同的属性(类型为Long),名为AttributeName),检查list2中是否存在list1中的元素。 现在,我是这样做的: 但我认为有更好更快的方法可以做到这一点:)有人能提出吗? 谢谢