当前位置: 代码迷 >> 综合 >> MySQL 编写sql 遇到问题。
  详细解决方案

MySQL 编写sql 遇到问题。

热度:105   发布时间:2023-11-30 21:37:11.0


SELECT NOW() FROM DUAL 

SELECT DATE(NOW()); -- 等价于 SELECT DATE(NOW()) FROM DUAL  获取当前年月日 :2019-03-13

SELECT YEAR(NOW()); #  等价于  SELECT YEAR(NOW()) FROM DUAL  获取当前年份 : 2019

SELECT CONCAT(YEAR(NOW()), "年度") ; # 当前年份与中文拼接   :2019年度

substation IN ( '诚' ,'苏') -- 判断字段等于哪些值
   
DELETE FROM k_tree ; # 删除表数据 一行一行的删,删掉多少行,多少行受影响
 
TRUNCATE TABLE k_tree ; # 删除表数据 ,清空表内容。相当于重新建表。数据不可恢复。
 
DROP TABLE k_tree ; -- 删除表数据和结构

INSERT INTO k_test SELECT NULL,dname,parentid,isleaf,rand0,fileuuid,submitdate,dyear FROM k_tree WHERE 
 /* 
    id 表中自增时,插入数据使用 null 代替,如果不写则报列数不一致,
    或者也可在 INSERT INTO k_test(dname,parentid,isleaf,....) 加上插入对应的列
  */

遇到需要update设置的参数来自从其他表select出的结果时,需要把update和select结合使用,不同数据库支持的形式不一样,在mysql中如下:

update A inner join(select id,name from B) c on A.id = c.id set A.name = c.name;

# ========================================================================
 /*   注:k_tree 是复制某一年树目录出来的数据,k_test 模拟插入真实的数据表。    */

-- 1. 复制表;
    CREATE TABLE k_tree  SELECT * FROM  k_dossierslist WHERE   dyear =  2017 

-- 2. 修改提交人,提交时间,年份
  UPDATE k_tree   SET submitdate =  DATE(NOW()),      submituserid='19',      dyear = YEAR(NOW())  WHERE dyear = '2017'
  
-- 3. 修改一级目录的名字              
  UPDATE k_tree SET dname = CONCAT(YEAR(NOW()), "年度") WHERE parentid = '555555' AND dyear = YEAR(NOW());

-- 创建表结构 
CREATE  TABLE k_test SELECT * FROM  k_tree WHERE 1=2;  
-- 查看表 结构
SELECT * FROM k_test
 

  相关解决方案