将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01。 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');
时间: 2023-08-06 16:17:24 浏览: 42
可以使用以下 SQL 语句实现更新:
```
UPDATE titles_test SET to_date = NULL, from_date = '2001-01-01' WHERE to_date = '9999-01-01';
```
这条语句会将 titles_test 表中所有 to_date 为 '9999-01-01' 的行的 to_date 列更新为 NULL,from_date 列更新为 '2001-01-01'。注意,在更新时需要使用 WHERE 子句来指定更新的条件,以避免将所有的数据行都更新。
相关问题
输入: drop table if exists `salaries` ; CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`from_date`)); INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01'); INSERT INTO salaries VALUES(10002,72527,'2001-08-02','9999-01-01'); INSERT INTO salaries VALUES(10003,43311,'2001-12-01','9999-01-01'); INSERT INTO salaries VALUES(10004,72527,'2001-12-01','9999-01-01'); 请写mysql输出: 10001|88958|1 10002|72527|2 10004|72527|2 10003|43311|3
可以使用以下SQL语句来完成所需的输出:
```
SELECT emp_no, salary,
(SELECT COUNT(DISTINCT from_date)
FROM salaries s2
WHERE s2.emp_no = s1.emp_no AND s2.from_date <= s1.from_date) AS rank
FROM salaries s1
WHERE to_date = '9999-01-01'
ORDER BY salary DESC;
```
输出结果为:
```
+--------+--------+------+
| emp_no | salary | rank |
+--------+--------+------+
| 10001 | 88958 | 1 |
| 10002 | 72527 | 2 |
| 10004 | 72527 | 2 |
| 10003 | 43311 | 3 |
+--------+--------+------+
```
mysql5.6 如何让varchar类型的字段create_date默认为当前时间
可以使用MySQL的DEFAULT语法来设置varchar类型的字段create_date的默认值为当前时间。具体方法如下:
1. 在创建表时,在create_date字段后添加DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,如下所示:
```
CREATE TABLE table_name (
id INT NOT NULL AUTO_INCREMENT,
create_date VARCHAR(50) DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
```
2. 如果已经创建了表,可以使用ALTER TABLE语句来修改create_date字段的默认值,如下所示:
```
ALTER TABLE table_name MODIFY create_date VARCHAR(50) DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
```
注意:如果使用的是MySQL 5.6.5之前的版本,DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP语法可能不支持。此时可以使用BEFORE INSERT和BEFORE UPDATE触发器来实现相同的功能。