SQL先查詢資料是否存在增加及修改的問題

2022-10-17 22:55:33 字數 5993 閱讀 6031

1樓:_聶永

set rs2=server.createobject("adodb.recordset")

sql="select * from book"

rs2.open sql,conn,1,3

rs2.addnew 是不是沒有它

rs2("bookid")=trim(request("bookid"))

rs2("bookname")=trim(request("bookname"))

rs2("booktype")=trim(request("booktype"))

rs2("booknum")=trim(request("booknum"))

rs2("bookpublishing")=trim(request("bookpublishing"))

rs2("bookpbutime")=trim(request("bookpbutime"))

rs2("bookmoney")=trim(request("bookmoney"))

rs2.update是不是沒有它

2樓:菜鳥沉默

看了半天,還是沒有看懂

3樓:匿名使用者

在你插入的時候,你實際上已經查詢一遍了,當然這是動態的** 網頁重新整理一遍,所以你文字框中的值被初始化了,所以改不了!!

sql語句新增資料時能否實現先查詢有無此條記錄再新增?

4樓:匿名使用者

最好分開寫,用異常來捕獲可預知錯誤是不應該的先根據條件到資料庫裡查詢,如果有就彈msg已經有該資料了,如果沒有則繼續插入

if(exist())

insertdb();

5樓:匿名使用者

sql server可以用if exists來判斷

儲存過程

if exists(select 1 from sysobjects where name='儲存過程名')

drop procedure 儲存過程名

go資料庫表

if exists(select 1 from sysobjects where name='表名')

drop table 表名

go資料庫

if exists(select 1 from sysdatabases where name='資料庫名')

drop database 資料庫名

go索引

if exists (select 1 from sysindexes where name = '索引名')

drop index 表名.索引名

go檢視

if exists (select 1 from sysindexes where name = '檢視名')

drop view 檢視名

go總結一下:

查 儲存過程、資料庫表 使用 sysobjects 表,

查 資料庫 使用 sysdatabases 表,

查 索引、檢視 使用 sysindexes 表

這些是查系統表的,那麼查普通表怎麼查?嗯

if exists(select 1 from 表名 where 條件)

[begin] --begin和end 相當於「{}」存在,把後面多句整合成一個整體

要做的操作

[end]

go ps1:if exists這個語法貌似還有其他的用法,建議去查一查,很好用很好用,用會了會上癮我會說?

ps2:這個go挺好用,像斷點,他會把前面一個go和後面一個go之間的**執行生效後才會繼續執行後面的**,比如:剛進入sql server的時候預設是進入master庫,先看看下面2段語句的結果

use bbs

create table 1go和

use bbs

gocreate table 1

go第一句 會在master建一個table1,然後進入bbs庫;第二句 會進入bbs庫 然後在bbs庫建table1表

ps2:select 1 from。。。。這裡的1主要是加快搜尋速度,這種只查詢是否存在的情況下,如果查到資料就顯示1,這樣可以大大地加快搜尋速度,查詢的結果是有多少條資料就有多少個1

6樓:

不寫儲存過程的方法就只有

先查詢出來在一個dataset表中,然後檢測dataset表的row.cout是不是大於零,if dataset.talbes(0).rows.cout > 0 then

說明些資訊已經存在

else

return

7樓:

if not exists(select * from table where id=1)

insert into table

values(......)

我試了 可以

mysql中先判斷資料是否存在,如存在則增加數量,不存在則增加一條記錄 100

8樓:匿名使用者

比如想往表中插入一條資料,如果表中沒有該條資料才插入,如果已經存在該條資料就不插入。

首先,在建立表時,將不需要重複的欄位設定為unique,然後在插入時,使用insert ignore語句。

例如:(資料庫用的是mysql5)

建立一張表用來儲存使用者:

create table user_info

(uid mediumint(10) unsigned not null auto_increment primary key,

last_name char(20) not null,

first_name char(20) not null,

unique ( last_name, first_name)

);alter table anser add unique (last_name,first_name)

插入資料:

insert ignore into user_info (last_name,first_name) values ('x','y');

這樣一來,如果表中已經存在last_name='x'且first_name='y'的資料,就不會插入,如果沒有就會插入一條新資料。

——————注意,以上是我直接複製貼上的資訊,以下為原創

然後捕捉查詢結果,如果確實已經執行了插入操作,那麼就結束sql

否則,就執行一次update操作

這樣的話,我覺得程式執行效能是較好的

9樓:滄桑的

不一定要在mysql語句中判斷。在程式裡判斷一樣。

10樓:匿名使用者

報什麼錯誤?可以貼出來?

:count

:username都是引數?

【sql語句】用sql語句新增欄位前要先判斷該欄位是否已存在嗎?如果要,怎麼寫呢?謝謝您的解答!

11樓:匿名使用者

if not exists

(select * from syscolumns where id=object_id('tablename') and name='email')

begin

alter table tablename add email varchar(30)end

12樓:流星

alter table tablename

add email varchar(30);

如何在sql中設定插入時判斷表中是否有該資料?

13樓:匿名使用者

是這樣的,insert into...values...語句不允許和where子句一起使用的(子查詢追加insert into...

select...則可以在子查詢裡使用where子句)。要實現題主的這個需求,只能通過應程式端程式設計或在資料庫端的儲存過程裡解決。

補充回答

後來我嘗試了一下用 insert into...select..變通一下單憑sql也可以解決,我在access裡測試這個思路通過了。

由於身邊沒有mssql環境,請題主測試下列**,我想應該也是可以的

insert into tbteam_daily select

top 1 n'2011-12-2',n'3組',n'',n'23' from tbteam_daily

where not exists (select 1 from tbteam_daily

where tdate = n'2011-12-2' and teamname = n'4組');

14樓:匿名使用者

不用,其實可以這樣做

insert into tbteam_dailyselect n'2011-12-2',n'3組',n'',n'23'

where not exists (select * from tbteam_daily where tdate = n'2011-12-2' and teamname = n'4組')

這樣就行了

my sql 資料庫語句 我要新增一條資料,但是要先判斷這個資料存不存在可以一句搞完麼?

15樓:折柳成萌

insert into table_name ( col_name1,col_name2,......)

select value1,value2,....

where not exists ( select 1 from table_name a where ........ )

16樓:匿名使用者

replace into 你看看 是否符合需求

sql怎麼判斷插入的值已經有了或者相同的資料就不插入呢

17樓:匿名使用者

判斷是否存在相同資料,一般使用【exists】函式判斷。

exists

指定一個子查詢,檢測行的存在。

語法exists subquery

引數subquery

是一個受限的 select 語句 (不允許有 compute 子句和 into 關鍵字)。有關更多資訊,請參見 select 中有關子查詢的討論。

結果型別

boolean

結果值如果子查詢包含行,則返回 true。

例如:表【dbo.tb_e_user】,其中列【userid】不允許重複

if exists(select 0 from dbo.tb_b_user where userid='testuserid')

begin

raiserror 50001 '使用者名稱已存在,請不要重複新增。'

endelse

begin

insert into dbo.tb_b_user (userid) values ('testuserid')end

18樓:匿名使用者

用if not exists(select 列出的欄位 from 表名 where 條件)

insert .........-----插入語句

19樓:農夫山烏龍茶

沒有簡單的方法,都insert 進去之後,在distinct 吧,看看能不能行

20樓:匿名使用者

將表設定主鍵約束,重複的值就插不進去了。插入時會報鍵值錯誤

sql查詢出的結果為查詢條件,最後進行計算批量改資料

21樓:匿名使用者

update 表名  set 成績=a.成績+b.成績 from(select 姓名,成績 from 表名 where 科目= '日語') b

inner join 表名 a on a.姓名=b.姓名where a.科目='外語'

sqlserver的話用上邊那句,其他資料庫可能寫法有變化,其他資料庫的話再說

sql判斷列是否存在,sql判斷列是否存在

2種辦法 1.根據bai系統表判斷 du列是 否zhi存在,比如oracle的daouser tab columns,sqlserver的dbo.syscolumns 然後拼sql 2.直接select select from a然後,判斷 結果集 中是版否 月各列,分別獲取權值。select fr...

sybase資料庫 如何使用sql語句查詢,資料庫容量大小和

sybase公司是世界著名的資料庫廠家,其關聯式資料庫產品sybase sql server在中國大中型企事業單位中擁有大量的使用者。針對獲取資料庫相關資訊也提供了對應的api,以便管理進行維護。一 sp spaceused 可看到資料庫空間包括日誌 對應資料庫 開啟sql advantage 對話...

如何查詢某個資料庫的某個表欄位,SQL資料庫,如何查詢資料庫內含有某一列(某欄位,如name)的所有表

2008沒用過,不懂!不過我覺得應該和2003或者2005是一樣的操作,因為他們都使用的sql語句,變化應該不是很大!select b.name 表名,a.name 欄位名 from syscolumns a join sysobjects b on a.id b.id where b.xtype ...