Skip to content

SQL237 将所有to_date为9999-01-01的全部更新为NULL

Static BadgeStatic Badge

题目描述

将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01。

sql
CREATE TABLE IF NOT EXISTS titles_test (
    id int(11) not null primary key,
    emp_no int(11) NOT NULL,
    title varchar(50) NOT NULL,
    from_date date NOT NULL,
    to_date date DEFAULT NULL
);

insert into titles_test values ('1', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('2', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('6', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');

更新后的值:

titles_test 表的值:

idemp_notitlefrom_dateto_date
110001Senior Engineer2001-01-01NULL
210002Staff2001-01-01NULL
310003Senior Engineer2001-01-01NULL
410004Senior Engineer2001-01-01NULL
510001Senior Engineer2001-01-01NULL
610002Staff2001-01-01NULL
710003Senior Engineer2001-01-01NULL

后台会执行下面SQL语句得到输出,判断正确:

sql
select count(*) from titles_test where from_date='2001-01-01' and to_date is NULL;

SQL Schema

sql
drop table if exists titles_test;
CREATE TABLE  titles_test (
   id int(11) not null primary key,
   emp_no  int(11) NOT NULL,
   title  varchar(50) NOT NULL,
   from_date  date NOT NULL,
   to_date  date DEFAULT NULL);

insert into titles_test values
('1', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('2', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('6', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');

答案

sql
UPDATE titles_test
SET to_date   = NULL,
    from_date = '2001-01-01'
WHERE to_date = '9999-01-01';