初识Mysql(part16)--我需要知道的2条Mysql语句之子查询

学习笔记,以代码和例子堆砌而成,方便查阅。
参考书籍:《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;

查询结果:

扫描二维码关注公众号,回复: 11005209 查看本文章
# pr_id, total
'1001', '90'
'1002', '50'
'1003', '90'
'1004', '50'
'1005', NULL

后记:子查询这节好好看看书本(对于鄙人来说)

发布了219 篇原创文章 · 获赞 102 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/105645070