insert into
"user"(
display_name,
telephone,
address,
username,
"password")
select
'王凱歌',
null,
null,
'wangkaige',
'$2a$10$i2wwn3afp8t'
where
not exists(
select
idfrom
"user"
where
username ='wangkaige'
and delete_flag = false );
該句分兩個段落進行解析:
第乙個段落為:
select
'王凱歌',
null,
null,
'wangkaige',
'$2a$10$i2wwn3afp8t'
where
not exists(
select
idfrom
"user"
where
username ='wangkaige'
and delete_flag = false )
where
子句後跟的是一段判斷表示式,如當我們執行
select * from "user" where true
-- 或 select * from "user" where 1=1
時,將恆成立地查詢所有的資料。
not exists(
select
idfrom
"user"
where
username ='wangkaige'
and delete_flag = false )
這段**判斷的是是否存在乙個username='wangkaige'
並且未被刪除的記錄。當不存在時,將返回空白記錄,因此not exists
判斷成功。這個時候sql片段
select
'王凱歌',
null,
null,
'wangkaige',
'$2a$10$i2wwn3afp8t'
where
not exists(
select
idfrom
"user"
where
username ='wangkaige'
and delete_flag = false )
將返回一行記錄
?column?
?column?
?column?
?column?
?column?
王凱歌null
null
wangkaige
$2a$10$i2wwn3afp8t
這行記錄的值將作為insert
語句values
新增到庫中去。這裡的表頭不用關心,沒關係的。
當原來查詢的記錄存在時,自行腦補一下。
第二個段落
第二個段落就是insert
語句段落了,再粘一遍
insert into
"user"(
display_name,
telephone,
address,
username,
"password")
select
'王凱歌',
null,
null,
'wangkaige',
'$2a$10$i2wwn3afp8t'
where
not exists(
select
idfrom
"user"
where
username ='wangkaige'
and delete_flag = false );
postgresql 迴圈插入資料
plsql直接迴圈插資料當然比 裡迴圈插要快很多,只是pl sql的語法不怎麼統一,不同的資料庫語法上有些細微的差異,很頭疼 postgresql 迴圈插入資料 do declare v idx integer 1 begin while v idx 10 loop v idx v idx 1 in...
postgresql 實現插入 更新操作
insert into sip data sip ip 2m data time first,time last,ip,ip port,port values 2019 4 6 15 14 29 2019 4 6 14 59 28 203.190.77.198 203.190.77.198 4256...
在ubuntu下安裝PostgreSQL 9 0
最新版的直接可以用命令安裝 sudo apt get install postgresql xx 如果想安裝舊版本的 需要更新一下源 cd etc apt cp sources.list sources.list.old sudo vi sources.list在sources.list追加 deb...