MySQL学习笔记:组合查询

本文为本人学习书籍《MySQL必知必会》笔记系列,欢迎持续关注,有问题随时留言评论,一起探讨学习~

17组合查询

17.1 使用UNION操作符将多条SELECT语句组合成一个结果集。

查找Price1>5000的商品

SELECT id,name,Price1,CategoryId
FROM product
WHERE Price1>5000
LIMIT 0,5;

查找CategoryId为-3616686982174654262或者5597743622164662328的商品

SELECT id,name,Price1,CategoryId
FROM product
WHERE CategoryId IN (-3616686982174654262,5597743622164662328)
LIMIT 0,5;

使用UNION操作符将上面两条SELECT语句组合成一个结果集(WHERE语句也可以)

SELECT id,name,Price1,CategoryId
FROM product
WHERE Price1>5000
UNION
SELECT id,name,Price1,CategoryId
FROM product
WHERE CategoryId IN (-3616686982174654262,5597743622164662328)
LIMIT 0,5;

17.2 UNION规则

UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔;UNION中的每个查询必须包含相同的列、表达式或聚集函数(各列的次序可以不同);列数据类型必须兼容

17.3使用UNION的查找结果输出时,重复行默认被自动取消。如果想返回配匹的所有行,使用UNION ALL

SELECT id,name,Price1,CategoryId
FROM product
WHERE Price1>5000
UNION ALL
SELECT id,name,Price1,CategoryId
FROM product
WHERE CategoryId IN (-3616686982174654262,5597743622164662328)
LIMIT 0,5;

17.4使用UNION再使用排序ORDER BY或者LIMIT只需要一次

SELECT id,name,Price1,CategoryId
FROM product
WHERE Price1>5000
UNION
SELECT id,name,Price1,CategoryId
FROM product
WHERE CategoryId IN (-3616686982174654262,5597743622164662328)
ORDER BY Id
LIMIT 0,5;
发布了51 篇原创文章 · 获赞 34 · 访问量 883

猜你喜欢

转载自blog.csdn.net/weixin_43412569/article/details/104860634
今日推荐