子查询: 子查询,即嵌套在其他查询中的查询.例如我们有这样几个表,顾客表,订单表,商品表,我们想知道有哪些客户买了商品A,那么我们就需要先查看哪些订单里包含了商品A,然后根据订单查出是哪些客户. mysql> select cust_id from orders where order_num in (select order_num from orderitems where prod_id = '1'); +---------+ | cust_id | +---------+ | 10…
[注意]:Oracle数据库支持full join,mysql是不支持full join的,但仍然可以同过左外连接+ union+右外连接实现 初始化SQL语句: /*join 建表语句*/ drop database if exists test; create database test; use test; /* 左表t1*/ drop table if exists t1; create table t1 (id int not null,name v…
最经做项目时发现的问题,好像在update时也有... 网上查到的资料如下: 1.使用mysql进行delete from操作时,若子查询的 FROM 字句和更新/删除对象使用同一张表,会出现错误. mysql> DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM tab1 ); ERROR 1093 (HY000): You can’t specify target table ‘tab1′ for update in FROM cl…
知识点八:子查询(42) 什么是子查询: 子查询是将一个查询语句嵌套在另一个查询语句中.内层查询语句的查询结果,可以作为外层查询语句提供条件. 引发子查询的情况: 使用[NOT] IN 的子查询 --删除原本的员工表和部门表,重新建 DROP TABLE employee,department; CREATE TABLE IF NOT EXISTS department( id TINYINT UNSIGNED AUTO_INCREMENT KEY, depName ) NOT NULL UNI…
参考文章https://zhuanlan.zhihu.com/p/41844742 成绩表如下Score: 问题:查询科目中成绩大于平均成绩的记录? SELECT * FROM Score WHERE score > ( SELECT AVG(score) FROM Score GROUP BY courseid ); 上述SQL语句是错误的,因为子查询结果分别为三个科目的平均成绩,与score无法进行比较. 正确SQL语句如下:SELECT * SELECT * FROM Score as a…
原来以为mysql可以进行这样的查询select id, list, name from table where 'daodao' IN (list); (一)注:1. table含有三个字段id:int, list:varchar(255), name:varchar(255) 实际上这样是不行的,这样只有当'daodao'是list中的第一个元素(我测试的时候貌似是第一个也是不行的,只有当list字段的值等于daodao时才是对的)时,查询才有效,否则都的不到结果,即使'dao…
例1:查询某个文章及其对应的评论(单个详情) ) FROM A; 例2:查询分类表中,每种分类各包含多少商品(汇总) SELECT category_id, (SELECT count(goods_id) FROM Goods WHERE category_id = A.category_id) FROM category; 部分参考:http://zhidao.baidu.com/link?url=FAZU7UHkC-qZXm4rPm5SNzHtVPf_YzINFsM-sNIeVSXungAt…
SELECT cust_name, cust_contact FROM customers WHERE cust_id IN (SELECT cust_id FROM orders #单独写多个分句,最后组成一个. WHERE order_num IN (SELECT order_num FROM orderitems #Where子句和Select子句中的列必须相同. WHERE prod_id = 'TNT2' )); # 还有其他方法可以替代该方法.…