我正在尝试使用以下脚本在我的 linux 机器上安装和启动 db2:
#!/usr/bin/env bash
MKDIR=/bin/mkdir
RM=/bin/rm
TAR=/bin/tar
DB2_SERVER_PROGRAM_PATH=/home/alok/Documents/Installers
DB2_SERVER_PROGRAM=v10.5_linuxx64_expc.tar.gz
echo "changing to $DB_SERVER_PROGRAM_PATH"
cd ${DB2_SERVER_PROGRAM_PATH}
echo "removing expc"
${RM} -rf expc
echo "untarring ${DB2_SERVER_PROGRAM}"
${TAR} zxf ${DB2_SERVER_PROGRAM}
echo "changing to expc"
cd expc
echo "Installing db2 as root"
sudo ./db2_install
echo "Adding user group db2grp1 as root"
sudo groupadd db2grp1
echo "Adding user group dasadm1 as root"
sudo groupadd dasadm1
echo "Adding user group db2fgrp1 as root"
sudo groupadd db2fgrp1
echo "Adding user db2inst1. Please provide password for …Run Code Online (Sandbox Code Playgroud) 如果 DB2 for IBM i 7.1 中已经存在全局临时表,那么测试的语法是什么?
我试过这个DECLARE GLOBAL TEMPORARY TABLE:
SELECT * FROM QSYS2.SYSTABLES WHERE SYSTEM_TABLE_SCHEMA = 'QTEMP';
Run Code Online (Sandbox Code Playgroud)
它返回了一个空的结果集。永久表似乎包含在该视图中,但不包含临时表。
最终,我需要有条件地删除临时表或截断/删除数据(如果存在)。
我有2张桌子
Table A
address_id email
12341 aba@mail.com
12342 abb@mail.com
12343 abc@mail.com
12344 abd@mail.com
12345 abe@mail.com
12346 abf@mail.com
12347 abg@mail.com
12348 abh@mail.com
12349 abi@mail.com
Table B
address_id email
12342 xyz@mail.com
12344 xyy@mail.com
12349 xyx@mail.com
Run Code Online (Sandbox Code Playgroud)
我想用表 B 中 address_id 匹配的电子邮件更新表 A 中的电子邮件。
我试过下面的查询:
update TableA A
set email=(select email from TableB B where A.address_id=B.address_id)
Run Code Online (Sandbox Code Playgroud)
但是它将所有电子邮件更新为 null,其中 address_id 在 TableA 中不匹配。
感谢你的帮助..
我有 2 个表:TVSHOW 和 ACTOR。如果使用 DB2 的 ACTOR 表中不存在 TVSHOW 中插入的演员,我想拒绝记录。
db2 "ALTER TABLE TVSHOW ADD CONSTRAINT check_actor CHECK (actor in (select id from ACTOR))"
Run Code Online (Sandbox Code Playgroud)
我不断地遇到, During SQL processing it returned: SQL0546N The check constraint "check_actor" is invalid.
我怎样才能解决这个问题?
在 DB2 中,似乎什么是数据库和什么是表空间之间有很大的区别。在 MySQL 和 MS SQL Server 中,表空间和数据库似乎是同义词。
如果有的话,有什么区别?
我的查询是:
SELECT BRAND,BRAND_GROUP, SUB_BRAND ,SUM(INCOME) AS TOTAL_INCOME FROM
"tema".MMT WHERE BRAND_GROUP IS NULL AND SUB_BRAND IS NULL GROUP BY
BRAND,BRAND_GROUP,SUB_BRAND
UNION
SELECT BRAND,BRAND_GROUP, SUB_BRAND ,SUM(INCOME) AS TOTAL_INCOME FROM
"tema".BGT WHERE BRAND_GROUP IS NULL AND SUB_BRAND IS NULL GROUP BY
BRAND,BRAND_GROUP,SUB_BRAND;
Run Code Online (Sandbox Code Playgroud)
我的输出是:
BRAND BRAND_GROUP SUB_BRAND TOTAL_INCOME
----- ----------- --------- ------------
GBS NULL NULL 10000
SWG NULL NULL 10000
GBS NULL NULL 20000
STG NULL NULL 20000
GTS NULL NULL 30000
Run Code Online (Sandbox Code Playgroud)
问题是我有 2 类品牌,而我只想拥有 1 类。像这样:
Brand Brand_Group Sub_brand Total_Income
GBS - …Run Code Online (Sandbox Code Playgroud) 我在 DB2 中有一个表(表 A),其中需要根据表 B 中的值更新列。
例如
表 A有两列和以下数据。
ID LOGIN
01 DONALD.TRUMP
02 BARACK.OBAMA
03 ABRAHAM.LINCOLN
Run Code Online (Sandbox Code Playgroud)
表B具有以下数据。
ID OLDLOGIN NEWLOGIN
01 DONALD.TRUMP DONALD.T
02 ABRAHAM.LINCOLN ABRAHAM.LIN
Run Code Online (Sandbox Code Playgroud)
我想更新表 A 的 LOGIN 值,如果它们存在于表 B 的 OLDLOGIN 中,则为它们提供 NEWLOGIN 值。
所以表A中的最终结果应该如下所示
ID LOGIN
01 DONALD.T
02 BARACK.OBAMA
03 ABRAHAM.LIN
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?