mysql - 使用 UNION 选择但限制每个子查询并接收不同的值

标签 mysql sql

我有一张表,想从一个订单中获取 15 个值,在另一个订单中获取 15 个值。目标是获得恰好 30 个不同的值。
这是我的代码:

 (SELECT * FROM table1 WHERE criteria ORDER BY views DESC LIMIT 15)  
  UNION All  
 (SELECT * FROM table1 WHERE criteria ORDER BY date_upload DESC LIMIT 15) 

我知道如何使用两个查询(使用 NOT IN )完成任务,但有没有办法在一个查询中完成?

最佳答案

如有必要,将“id”替换为您的主键名称:

(SELECT * FROM table1 WHERE criteria ORDER BY views DESC LIMIT 15)
UNION
(SELECT * FROM table1 WHERE criteria AND id NOT IN(SELECT id FROM table1 WHERE criteria LIMIT 15) ORDER BY date_upload DESC LIMIT 15)

这个查询:
- 选择按浏览量排序的前 15 条记录匹配条件
- 选择前 15 个匹配条件而不是在第一个 SELECT 中,并按 date_upload 排序

使用此查询,每次表 1 中有 30 条不同的记录时,您将确保获得 30 条记录。

关于mysql - 使用 UNION 选择但限制每个子查询并接收不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584941/

相关文章:

php - 在 PHP 中连接条件查询,同时尝试从多个表中获取行

MySql用户输入限制

asp.net - 通过从MySQL表中采样纪元来获取记录-选择最接近的值?

SQL - 分组为单独的列

sql - 数据库模型结构

mysql - 避免返回多行

mysql - phpmyadmin中导入表后,左侧面板看不到

Python os.system 输入要在 CLI 应用程序中执行的命令

sql server 2008数据透视表

sql - 什么时候索引变得必要或有值(value)?