由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 问个简单的sql语句
相关主题
请教一个query 优化的问题(filter keyword)any group function reutrn null if there is null value?
请教一个SQL Server的面试题请教几个面试题
sql query helpsql 题目求助
菜鸟问题,急谁能帮我看看这个Insert语句要怎么改一下?
A rookie's query question请教一个SQL的问题
问个sql/ ssis的问题 谢谢!sort two same tables SQL but different results
一个oracle performance 的问题。SQL copy a table into a new table and add a new column
高手请进请问sql 有条件性的select columns
相关话题的讨论汇总
话题: col2话题: update话题: conditiona话题: set话题: trigger
进入Database版参与讨论
1 (共1页)
t********5
发帖数: 274
1
问个弱问题,
只有在conditionA的情况下,更新column2,否则不更新,不想把IF写在update外边,
按照我下边的样子,能实现吗
update tableA
set column1 ='aaa',
if(conditionA)
set column2='bbb',
else
do not update column2
end
set column3='sdfd',
.......
a9
发帖数: 21638
2
你这是口语,计算机识别不了吧?
分两个sql语句执行不就得了。
或者用case

【在 t********5 的大作中提到】
: 问个弱问题,
: 只有在conditionA的情况下,更新column2,否则不更新,不想把IF写在update外边,
: 按照我下边的样子,能实现吗
: update tableA
: set column1 ='aaa',
: if(conditionA)
: set column2='bbb',
: else
: do not update column2
: end

c*******e
发帖数: 8624
3
update tableA
set column2 = case ...

【在 t********5 的大作中提到】
: 问个弱问题,
: 只有在conditionA的情况下,更新column2,否则不更新,不想把IF写在update外边,
: 按照我下边的样子,能实现吗
: update tableA
: set column1 ='aaa',
: if(conditionA)
: set column2='bbb',
: else
: do not update column2
: end

B*****g
发帖数: 34098
4
col2上没有trigger行,有trigger就不一样了

边,

【在 c*******e 的大作中提到】
: update tableA
: set column2 = case ...

i****a
发帖数: 36252
5
say say 有trigger what happens?

【在 B*****g 的大作中提到】
: col2上没有trigger行,有trigger就不一样了
:
: 边,

B*****g
发帖数: 34098
6
一般来说大家就是写
update tabA set col2 = CASE when conditionA then 'AAA' else col2 end
但是要求是当非conditionA时不update,上面这个只实现了非conditionA时col2值不变。
假如说col2上有trigger当update时,把tabA的record复制到tabB中,不update col2就
不会复制,而update col2=col2就会复制。

【在 i****a 的大作中提到】
: say say 有trigger what happens?
i****a
发帖数: 36252
7
I am always curious, is update xxxtable set col2 = col2 really an update.
curious on 2 levels. on the query execution level, is it really a
transaction, or does it set off trigger
on disk IO level, does it cause disk activity.

变。

【在 B*****g 的大作中提到】
: 一般来说大家就是写
: update tabA set col2 = CASE when conditionA then 'AAA' else col2 end
: 但是要求是当非conditionA时不update,上面这个只实现了非conditionA时col2值不变。
: 假如说col2上有trigger当update时,把tabA的record复制到tabB中,不update col2就
: 不会复制,而update col2=col2就会复制。

k********e
发帖数: 702
8
in MySQL it won't update.

【在 i****a 的大作中提到】
: I am always curious, is update xxxtable set col2 = col2 really an update.
: curious on 2 levels. on the query execution level, is it really a
: transaction, or does it set off trigger
: on disk IO level, does it cause disk activity.
:
: 变。

y****w
发帖数: 3747
9
如果conditionA是全局的,写到外面会更好,false的时候不带c2玩就是了。很多时候
代码看起来多一点也未必是坏事,没必要任何时候都要求一句话解决。没有牺牲速度,
还可能避免很多麻烦。
写到一句里面就是case。

【在 t********5 的大作中提到】
: 问个弱问题,
: 只有在conditionA的情况下,更新column2,否则不更新,不想把IF写在update外边,
: 按照我下边的样子,能实现吗
: update tableA
: set column1 ='aaa',
: if(conditionA)
: set column2='bbb',
: else
: do not update column2
: end

B*****g
发帖数: 34098
10
Oracle will fire the trigger, usually need to add WHEN clause to the trigger
.
I do know much about mysql.
how about
update xxxtable set col2 = col2||''
update xxxtable set col2 = col2, col3=col3
update xxxtable set col2 = col2, col3=col2
update xxxtable set col2 = CASE WHEN 1=1 THEN col2 ELSE col3 END

【在 k********e 的大作中提到】
: in MySQL it won't update.
相关主题
问个sql/ ssis的问题 谢谢!any group function reutrn null if there is null value?
一个oracle performance 的问题。请教几个面试题
高手请进sql 题目求助
进入Database版参与讨论
B*****g
发帖数: 34098
11
a simple question finally become complicate, haha

【在 y****w 的大作中提到】
: 如果conditionA是全局的,写到外面会更好,false的时候不带c2玩就是了。很多时候
: 代码看起来多一点也未必是坏事,没必要任何时候都要求一句话解决。没有牺牲速度,
: 还可能避免很多麻烦。
: 写到一句里面就是case。

B*****g
发帖数: 34098
12
I will check the I/O later in Oracle.
But I really doubt it will not physical update. I am think always update is
much simpler for the database.

【在 i****a 的大作中提到】
: I am always curious, is update xxxtable set col2 = col2 really an update.
: curious on 2 levels. on the query execution level, is it really a
: transaction, or does it set off trigger
: on disk IO level, does it cause disk activity.
:
: 变。

a9
发帖数: 21638
13
倒不一定,对于现在优化到极致的数据库来说,能少一次i/o就会尽量少一次,要不然
,咱去给o/m提提意见去?

is

【在 B*****g 的大作中提到】
: I will check the I/O later in Oracle.
: But I really doubt it will not physical update. I am think always update is
: much simpler for the database.

B*****g
发帖数: 34098
14
问题还是挺多的. 比如说
怎样区分col2=col2, col2=col2||'' 和 col2='AAA' (if col2 value is 'AAA').
如果update10行,一行变了,9行没变怎么办?
还要不要fire trigger?
....
完了,再下去tom kyte来都不够用了。

【在 a9 的大作中提到】
: 倒不一定,对于现在优化到极致的数据库来说,能少一次i/o就会尽量少一次,要不然
: ,咱去给o/m提提意见去?
:
: is

a9
发帖数: 21638
15
要我设计的话,首先我会触发触发器。
因为触发了触发器,就会需要inserted/deleted表,这样,我就会比较一下更新前后数
据是否一致。
如果一致,就不写磁盘,如果不一致,就写。

不然

【在 B*****g 的大作中提到】
: 问题还是挺多的. 比如说
: 怎样区分col2=col2, col2=col2||'' 和 col2='AAA' (if col2 value is 'AAA').
: 如果update10行,一行变了,9行没变怎么办?
: 还要不要fire trigger?
: ....
: 完了,再下去tom kyte来都不够用了。

a9
发帖数: 21638
16
如果没有触发器,还会生成这两个表吗?

【在 a9 的大作中提到】
: 要我设计的话,首先我会触发触发器。
: 因为触发了触发器,就会需要inserted/deleted表,这样,我就会比较一下更新前后数
: 据是否一致。
: 如果一致,就不写磁盘,如果不一致,就写。
:
: 不然

B*****g
发帖数: 34098
17
Cannot check I/O now.
update col = col, SQL%ROWCOUNT in oracle is not 0
and those records are locked if no commit.

【在 a9 的大作中提到】
: 如果没有触发器,还会生成这两个表吗?
B*****g
发帖数: 34098
18
when you have inserted/deleted表, 已经写磁盘了吧

【在 a9 的大作中提到】
: 要我设计的话,首先我会触发触发器。
: 因为触发了触发器,就会需要inserted/deleted表,这样,我就会比较一下更新前后数
: 据是否一致。
: 如果一致,就不写磁盘,如果不一致,就写。
:
: 不然

a9
发帖数: 21638
19
还没有吧,transaction还没有commit呐?

后数

【在 B*****g 的大作中提到】
: when you have inserted/deleted表, 已经写磁盘了吧
a9
发帖数: 21638
20
那看来是用了最简单的方法:写

【在 B*****g 的大作中提到】
: Cannot check I/O now.
: update col = col, SQL%ROWCOUNT in oracle is not 0
: and those records are locked if no commit.

相关主题
谁能帮我看看这个Insert语句要怎么改一下?SQL copy a table into a new table and add a new column
请教一个SQL的问题请问sql 有条件性的select columns
sort two same tables SQL but different results如何除去duplicate rows?
进入Database版参与讨论
m***i
发帖数: 2480
21
update tableA
set Column1='aaa'
where (condition='True')

【在 t********5 的大作中提到】
: 问个弱问题,
: 只有在conditionA的情况下,更新column2,否则不更新,不想把IF写在update外边,
: 按照我下边的样子,能实现吗
: update tableA
: set column1 ='aaa',
: if(conditionA)
: set column2='bbb',
: else
: do not update column2
: end

B*****g
发帖数: 34098
22
NND, wrong again, correct it.
I think I am talking about undo segment.

【在 a9 的大作中提到】
: 还没有吧,transaction还没有commit呐?
:
: 后数

t********5
发帖数: 274
23
我这小问题没想到被展开了复杂的讨论。。。
我就想代码整洁点,写到一个sql里,case when不行的,因为我在conditionA不成立的
时候不想改变column2的值。。。
而set column2=case when的话,conditionA = false的时候column2会被设成空。。。
我发帖时已经写成两个sql先用着了
B*****g
发帖数: 34098
24
it seems you still not get waht we are talking about. I believe I have post
the code for you.
***********************************************************
发信人: Beijing (中国万岁,北京加油), 信区: Database
标 题: Re: 问个简单的sql语句
发信站: BBS 未名空间站 (Thu Jan 27 20:29:15 2011, 美东)
一般来说大家就是写
update tabA set col2 = CASE when conditionA then 'AAA' else col2 end
但是要求是当非conditionA时不update,上面这个只实现了非conditionA时col2值不变。
假如说col2上有trigger当update时,把tabA的record复制到tabB中,不update col2就
不会复制,而update col2=col2就会复制。
***********************************************************

【在 t********5 的大作中提到】
: 我这小问题没想到被展开了复杂的讨论。。。
: 我就想代码整洁点,写到一个sql里,case when不行的,因为我在conditionA不成立的
: 时候不想改变column2的值。。。
: 而set column2=case when的话,conditionA = false的时候column2会被设成空。。。
: 我发帖时已经写成两个sql先用着了

t********5
发帖数: 274
25
哦,明白了,多谢!

post
变。

【在 B*****g 的大作中提到】
: it seems you still not get waht we are talking about. I believe I have post
: the code for you.
: ***********************************************************
: 发信人: Beijing (中国万岁,北京加油), 信区: Database
: 标 题: Re: 问个简单的sql语句
: 发信站: BBS 未名空间站 (Thu Jan 27 20:29:15 2011, 美东)
: 一般来说大家就是写
: update tabA set col2 = CASE when conditionA then 'AAA' else col2 end
: 但是要求是当非conditionA时不update,上面这个只实现了非conditionA时col2值不变。
: 假如说col2上有trigger当update时,把tabA的record复制到tabB中,不update col2就

y****w
发帖数: 3747
26
but need comparsion before physical update. not acceptable sometimes as it is out of normal sense as you are supposed to update something to be
different.

what you proposed earlier today for the dbms will more likely to be a performance disaster...
80/20,80/20....

【在 a9 的大作中提到】
: 倒不一定,对于现在优化到极致的数据库来说,能少一次i/o就会尽量少一次,要不然
: ,咱去给o/m提提意见去?
:
: is

B*****g
发帖数: 34098
27
good。
希望你在这个sql外还学到了其他东东。

col2就

【在 t********5 的大作中提到】
: 哦,明白了,多谢!
:
: post
: 变。

a9
发帖数: 21638
28
关键问题是这个select是不是必须的。
如果有触发器,基本就是必须的,否则deleted表里的数据哪里来。

it is out of normal sense as you are supposed to update something to be
performance disaster...
不然

【在 y****w 的大作中提到】
: but need comparsion before physical update. not acceptable sometimes as it is out of normal sense as you are supposed to update something to be
: different.
:
: what you proposed earlier today for the dbms will more likely to be a performance disaster...
: 80/20,80/20....

y****w
发帖数: 3747
29
I don't think trigger is so common though;) even trigger exists, the
deleted/(or old table/new table)/sth. else
for different DBMS normally works on row, right?

【在 a9 的大作中提到】
: 关键问题是这个select是不是必须的。
: 如果有触发器,基本就是必须的,否则deleted表里的数据哪里来。
:
: it is out of normal sense as you are supposed to update something to be
: performance disaster...
: 不然

a9
发帖数: 21638
30
就是不知道有没有trigger的时候,会不会有这些表。
你处理多少行,delted表里就有多少记录啊。关键是访问的时候先生成还是select一条
生成一条。

【在 y****w 的大作中提到】
: I don't think trigger is so common though;) even trigger exists, the
: deleted/(or old table/new table)/sth. else
: for different DBMS normally works on row, right?

1 (共1页)
进入Database版参与讨论
相关主题
请问sql 有条件性的select columnsA rookie's query question
如何除去duplicate rows?问个sql/ ssis的问题 谢谢!
请教一个sql问题一个oracle performance 的问题。
mysql mapping and insert question高手请进
请教一个query 优化的问题(filter keyword)any group function reutrn null if there is null value?
请教一个SQL Server的面试题请教几个面试题
sql query helpsql 题目求助
菜鸟问题,急谁能帮我看看这个Insert语句要怎么改一下?
相关话题的讨论汇总
话题: col2话题: update话题: conditiona话题: set话题: trigger