------+--------+-------+ | Chun | SQL | 75 | | Esben | SQL | 43 | | Kaolin | Tuning | 88 | | Tatiana | SQL | 87 | +---------+--------+-------+ Calculating Age --------------- The TIMESTAMPDIFF function can be used to calculate someone's age: SELECT CURDATE() AS today; +------------+ | today | +------------+ | 2014-02-17 | +------------+ SELECT name, date_of_birth, TIMESTAMPDIFF(YEAR,date_of_birth,'2014-08-02') AS age FROM student_details; +---------+---------------+------+ | name | date_of_birth | age | +---------+---------------+------+ | Chun | 1993-12-31 | 20 | | Esben | 1946-01-01 | 68 | | Kaolin | 1996-07-16 | 18 | | Tatiana | 1988-04-13 | 26 | +---------+---------------+------+ See TIMESTAMPDIFF() for more. Using User-defined Variables ---------------------------- This example sets a user-defined variable with the average test score, and then uses it in a later query to return all results above the average. SELECT @avg_score:= AVG(score) FROM student_tests; +-------------------------+ | @avg_score:= AVG(score) | +-------------------------+ | 67.000000000 | +-------------------------+ SELECT * FROM student_tests WHERE score > @avg_score; +---------+--------+-------+------------+ | name | test | score | test_date | +---------+--------+-------+------------+ | Chun | SQL | 75 | 2012-11-05 | | Chun | Tuning | 73 | 2013-06-14 | | Kaolin | Tuning | 88 | 2013-12-29 | | Tatiana | SQL | 87 | 2012-04-28 | | Tatiana | Tuning | 83 | 2013-09-30 | +---------+--------+-------+------------+ User-defined variables can also be used to add an incremental counter to a resultset: SET @count = 0; SELECT @count := @count + 1 AS counter, name, date_of_birth FROM student_details; +---------+---------+---------------+ | counter | name | date_of_birth | +---------+---------+---------------+ | 1 | Chun | 1993-12-31 | | 2 | Esben | 1946-01-01 | | 3 | Kaolin | 1996-07-16 | | 4 | Tatiana | 1988-04-13 | +---------+---------+---------------+ See User-defined Variables for more. View Tables in Order of Size ---------------------------- Returns a list of all tables in the database, ordered by size: SELECT table_schema as `DB`, table_name AS `Table`, ROUND(((data_length + index_length) / 1024 / 1024), 2) `Size (MB)` FROM information_schema.TABLES ORDER BY (data_length + index_length) DESC; +--------------------+---------------------------------------+-----------+ | DB | Table | Size (MB) | +--------------------+---------------------------------------+-----------+ | wordpress | wp_simple_history_contexts | 7.05 | | wordpress | wp_posts | 6.59 | | wordpress | wp_simple_history | 3.05 | | wordpress | wp_comments | 2.73 | | wordpress | wp_commentmeta | 2.47 | | wordpress | wp_simple_login_log | 2.03 | ... Removing Duplicates ------------------- This example assumes there's a unique ID, but that all other fields are identical. In the example below, there are 4 records, 3 of which are duplicates, so two of the three duplicates need to be removed. The intermediate SELECT is not necessary, but demonstrates what is being returned. CREATE TABLE t (id INT, f1 VARCHAR(2)); INSERT INTO t VALUES (1,'a'), (2,'a'), (3,'b'), (4,'a'); SELECT * FROM t t1, t t2 WHERE t1.f1=t2.f1 AND t1.id<>t2.id AND t1.id=( SELECT MAX(id) FROM t tab WHERE tab.f1=t1.f1 ); +------+------+------+------+ | id | f1 | id | f1 | +------+------+------+------+ | 4 | a | 1 | a | | 4 | a | 2 | a | +------+------+------+------+ DELETE FROM t WHERE id IN ( SELECT t2.id FROM t t1, t t2 WHERE t1.f1=t2.f1 AND t1.id<>t2.id AND t1.id=( SELECT MAX(id) FROM t tab WHERE tab.f1=t1.f1 ) ); Query OK, 2 rows affected (0.120 sec) SELECT * F›Q