实例:
SELECT * FROM t1 WHERE column = (SELECT column FROM t2);求平均数,并四舍五入保留两位小数:
SELECT ROUND(AVG(number),2) FROM table;查询大于平均数的项,并且按照number的降序排列:
SELECT id,name,number FROM table WHERE number > (SELECT ROUND(AVG(number),2) FROM table ORDER BY number DESC;查询大于或等于“某一类别的”的编号的其他行,并且按照number降序排列
SELECT id,name,number FROM table WHERE number >= SOME(SELECT number FROM table WHERE classify = "某一类") ORDER BY number DESC;查询结果分组
SELECT classify FROM table GROUP BY classify;内连接
//查找id,name,classify_name,brand_name //其中 classify_name字段在table_classify中,brand_name在table_brand中 //table中只保存对应的id SELECT id,name,classify_name,brand_name FROM table AS a INNER JOIN table_classify AS b ON a.classify_id = b.clasify_id INNER JOIN table_brand AS c ON a.brand_id = c.brand_id;无限分类的数据表
/*比如在图书馆分类系统中,有父分类,子分类。组织起来的方式可以是,在一张表中存储 所有的分类,然后每个分类的字段为id,classify,parent , 其中,parent字段是父 分类的id号。这个时候要内连接表自身。*/查询所有分类及其父分类
//采用左连接,显示所有分类,若没有父亲,即显示为NULL SELECT s.id,s.classify,p.classify FROM table AS s LEFT JOIN table AS p ON s.parent = p.id;查询所有分类及其子类
//有多个子类的类会占多行 SELECT p.id,p.classify,s.classify FROM table AS p LEFT JOIN table AS s ON s.parent = p.id;查找所有分类及其子类的数目
//首先是结果为 父类编号,父类名,子类数目。 //结果就是按照父类名分组,并且显示该分组下的子类的数目 //并且结果按照父类的编号排序 默认从小到大 SELECT p.id,p.classify,COUNT(s.classify) AS childrenNum FROM table AS p LEFT JOIN table AS s ON s.parent = p.id GROUP BY p.classify ORDER BY p.id;查找重复记录
//比如只有2个行是同样的name 那么结果集就是1行 并且是编号较小的那一行 SELECT id,name FROM table GROUP BY name HAVING COUNT(name) > 1;删除重复记录
/*首先是子查询得到了上面的重复的结果集,然后当原表中的name等于重复表的name时 就应该要删除掉,并且我们这里是删除掉编号更大的,保留编号最小的一个。*/ DELETE t1 FROM table AS t LEFT JOIN (SELECT id,name FROM table GROUP BY name HAVING COUNT(name) > 1 ) AS t2 ON t1.name = t2.name WHEREt1.id > t2.id;