一、sql 中if條件的使用
如:查詢t_role角色表中是否存在t_user用戶表中Joi用戶的信息
select distinctrow * from t_user u left join t_role r on r.uid = u.uid and r.state = 1 where if (r.uid is not null , r.name = 'Joi' , 1 <> 1)
這里if的用法和三目運算類似,如果“r.uid is not null”條件滿足,說明role表中存在uid相等的用戶,然后選中“r.name = 'Joi'”條件,就會從左連接的結果中去查詢滿足“ r.name = 'Joi' ”的信息;否則會選中” 1 <> 1 “條件(1 <> 1為永假條件)。distinctrow 對行去重,查詢唯一的一行數據,對重復行去重。
二、sql 中 “ where 1=1 ” 和 “ where 1<>1 ”的使用
1、“ where 1=1 ”通常用於動態SQL,方便在拼接sql的時候直接拼“ and '條件1' ”,不用判斷是否是第一個查詢條件而處理要不要加“ and ”的兩種情況。
2、“ where 1<>1 ”用於只取結構不取數據的場合。
如:create table user_copy tablespace user_copy as select * from user where 1<>1
建成一個和user表結構完全相同的uer_copy表 ,但不拷貝user表中的數據。
另:
拷貝表
create table_name as select * from Source_table where 1=1;
復制表結構
create table_name as select * from Source_table where 1 <> 1;
3、查詢當前表最新一條數據
select * from t__msg order by id DESC limit 1