学习笔记,以代码和例子堆砌而成,方便查阅。
参考书籍:《Mysql必知必会》等
此Blog会用到下面3个表.
temp_store表:
# pr_id, store_num
'1001', '2000'
'1002', '1000'
'1003', '500'
'1004', '1000'
'1005', '700'
temp_product表:
# pr_id, pro_name
'1001', 'Apple'
'1002', 'Pen'
'1003', 'Book'
'1004', 'Hamburger'
'1005', 'Toy'
shop表:
# id, product, price, pro_number, note, something, pro_time, store
'1', 'Apple', '3', '30', 'sweet', ' OK ', '2019-11-10', '100'
'2', 'Chocolates', '6', '15', 'nice', 'SURE ', '2019-12-23', '50'
'3', 'Hamburger', '10', '5', 'yummy', 'FINE ', '2019-12-30', '10'
'4', 'Pen', '50', '1', 'fluent', ' NOW', '2020-01-01', '10'
'5', 'Book', '45', '2', 'excellent', 'WHAT', '2020-01-25', '50'
利用子查询进行过滤
SELECT product, price, pro_number FROM shop WHERE product IN (SELECT pro_name FROM temp_product WHERE pr_id IN (SELECT pr_id FROM temp_store WHERE store_num='1000'));
查询结果:
# product, price, pro_number
'Hamburger', '10', '5'
'Pen', '50', '1'
为了方便理解,我们将上面的sql语句拆分成3部分,并分别将查询结果输出:
- 第一部分
SELECT pr_id FROM temp_store WHERE store_num='1000';
查询结果:
# pr_id
'1002'
'1004'
- 第二部分
SELECT pro_name FROM temp_product WHERE pr_id IN (1002,1004);
查询结果:
# pro_name
'Pen'
'Hamburger'
- 第三部分
SELECT product, price, pro_number FROM shop WHERE product IN ('Pen','Hamburger');
查询结果:
# product, price, pro_number
'Hamburger', '10', '5'
'Pen', '50', '1'
作为计算字段使用子查询
SELECT pr_id,(SELECT price*pro_number FROM shop WHERE shop.product=temp_product.pro_name) AS total FROM temp_product;
查询结果:
# pr_id, total
'1001', '90'
'1002', '50'
'1003', '90'
'1004', '50'
'1005', NULL
后记:子查询这节好好看看书本(对于鄙人来说)