如何实现复杂的sql命令

时间:2017-06-29 14:37:49

标签: mysql sql

我在MySQL中有一个带有以下记录的SQL表:

+------+----------+
| user |   dob    |  
+------+----------+
| john | 1/10/96  | 
| jane | 3/4/97   | 
| jill | 1/8/96   | 
| jack | 2/9/00   |
| jane | 12/14/07 | 
| john | 1/11/98  | 
+------+----------+

这是我想要执行的命令:

使用dob<删除所有用户1/1/00但如果存在另一个名为dob> = 1/1/00的用户,请保留用户。

在这个例子中,johns和jill将被删除,janes和jack将保留。

如何将上述命令翻译成sql?

3 个答案:

答案 0 :(得分:1)

试试这个:

DELETE FROM Users WHERE dob <= '1/1/00'

答案 1 :(得分:1)

Delete with Join in MySQL

的帮助下

我做了

DELETE FROM table_name a
    INNER JOIN (SELECT count(name) as dupesPostMillenia, name 
                FROM table_name 
                WHERE dob>'1/1/00' 
                GROUP BY name ) b on a.name=b.name
    WHERE a.dob < '1/1/00' and b.dupesPostMillenia=0

我认为这可能有所帮助。

答案 2 :(得分:0)

DELETE FROM users WHERE dob < '2000-01-01'

请注意:我正在考虑您实际上是在MYSQL中以日期时间格式保存日期。此外,您可以在MYSQL中使用各种格式的日期。请参阅:https://stackoverflow.com/a/14051310/6385845