SELECTAVG(goods_price) FROM tdb_goods WHERE goods_price>=(SELECTAVG(goods_price) FROM tdb_goods); +------------------+ |AVG(goods_price) | +------------------+ |10780.0000000| +------------------+
使用avg函数时, 只有一条记录, 其他字段的信息只显示第一条. SELECT goods_id,goods_name,goods_price,AVG(goods_price) FROM tdb_goods WHERE goods_price>=(SELECTAVG(goods_price) FROM tdb_goods); +----------+-----------------------+-------------+------------------+ | goods_id | goods_name | goods_price |AVG(goods_price) | +----------+-----------------------+-------------+------------------+ |3| G150TH 15.6英寸游戏本 |8499.000|10780.0000000| +----------+-----------------------+-------------+------------------+
mysql>CREATE TABLE IF NOTEXISTS tdb_goods_cates( -> cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, -> cate_name VARCHAR(40) NOT NULL -> );
SHOW COLUMNS FROM tdb_goods_cates; +-----------+----------------------+------+-----+---------+----------------+ | Field | Type |Null| Key |Default| Extra | +-----------+----------------------+------+-----+---------+----------------+ | cate_id |smallint(5) unsigned |NO| PRI |NULL| auto_increment | | cate_name |varchar(40) |NO||NULL|| +-----------+----------------------+------+-----+---------+----------------+
insert into tdb_goods_cates(cate_name) select goods_cate from tdb_goods groupby goods_cate; Query OK, 7rows affected (0.07 sec)
错误的写法: delete tt1 from tdb_goods as tt1 leftjoin (select*from tdb_goods as t1 groupby t1.goods_name havingcount(t1.goods_name)>=2) as tt2 on tt1.goods_name=tt2.goods_name and tt1.goods_id>tt2.goods_id; Query OK, 24rows affected (0.07 sec)
正确的写法: delete tt1 from tdb_goods as tt1 leftjoin ( select*from tdb_goods as t1 groupby t1.goods_name havingcount(t1.goods_name)>=2) as tt2 on tt1.goods_name=tt2.goods_name where tt1.goods_id>tt2.goods_id; Query OK, 0rows affected (0.00 sec)
Delete 中包含 left join
左侧的表是待删除的表
不能关联成功的要过滤掉
1 2 3
deletefrom tbl_pps_nc_group_member WHERE user_id = #fromUserId# and group_id in (SELECT group_id FROM tbl_pps_nc_group where user_id = #myUserId# );
与
1 2 3
select*FROM tbl_pps_nc_group_member nm LEFTJOIN tbl_pps_nc_group ng ON nm.user_id =''AND nm.group_id=ng.group_id AND ng.user_id ='' WHERE ng.group_id isNOT null
SELECT u.`name` AS userName, u.phone AS userPhone, u.user_id AS userId, CASEWHEN f.from_user_id ='1018'THEN f.`status` +4ELSE f.`status` ENDAS `status` FROM t_friend f LEFTJOIN t_user_info u ON (u.user_id = f.from_user_id AND f.to_user_id ='1018' ) OR (u.user_id = f.to_user_id AND f.from_user_id ='1018' ) WHERE u.user_id ISNOT NULL
[总结]
left join中的on语句, 是在被关联表满足on条件才会关联,否则显示为null, 因此通过判断右侧是否为空,可以判断是否满足条件