本文为本人学习书籍《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;