mysql - 一个表中的所有值 UNION SELECT TOP N 来自另一个表的值
问题描述
新手在这里 - 目前我有这个 MySQL 查询:
SELECT {cols}
FROM calibrator_list
UNION SELECT {cols}
FROM target_list
WHERE ({ra_min} < ra AND ra < {ra_max}) AND
({dec_min} < decl AND decl < {dec_max})
正如预期的那样,这产生了 和 的target_list
并集calibrator_list
。如果满足要求,我希望查询生成一个表,其中包含来自 的所有值target_list
,但只有来自 的最大单个值;这可以是列表中的随机值或按任意列排序,只要生成的表中只有一个条目。calibrator_list
WHERE
calibrator_list
我试过了:
SELECT {cols}
FROM calibrator_list
WHERE ({ra_min} < ra AND ra < {ra_max}) AND
({dec_min} < decl AND decl < {dec_max})
LIMIT 1
UNION SELECT {cols}
FROM target_list
WHERE ({ra_min} < ra AND ra < {ra_max}) AND
({dec_min} < decl AND decl < {dec_max})
但这会引发语法错误,据说是关于该UNION SELECT {cols}
行的,如果我省略该行,则该错误不存在LIMIT 1
。关于如何实现这一目标的任何想法?
解决方案
做你想做的事,你需要括号:
(SELECT {cols}
FROM calibrator_list
LIMIT 1
) UNION
SELECT {cols}
FROM target_list
WHERE ({ra_min} < ra AND ra < {ra_max}) AND
({dec_min} < decl AND decl < {dec_max})
两个注意事项:
- 您通常使用
LIMIT
withORDER BY
。否则返回的行是任意的,并且可以(理论上)因运行而异。 UNION ALL
比 更有效UNION
。您没有指定是否要承担删除重复项的开销。如果您需要这样做,那么您需要较慢的查询并使用UNION
.
推荐阅读
- maven - 如何使用 maven jar 插件在生成的 jar 文件的清单文件的类路径中列出依赖项及其相对路径?
- sql - 如何根据条件生成列的范围
- java - 尽管使用了正确的 Java 版本,但不支持的 major.minor 版本
- vb.net - 如何使用 vb.net 对 GRIDVIEW 表(无数据源)进行排序
- android - 如何以自定义对象为主体创建retrofit2.Response?
- python - Python 字典和 Openpyxl
- excel - 当用户在特定列范围内输入数据时,VBA 代码可以更新 Excel 工作表列中的单元格吗?
- c - 结构中的 C Sizeof char[]
- html - 如何以角度手动创建和访问firebase中的对象数组?
- azure-active-directory - Azure Active Directory Server 2016 组策略启动应用程序 (Chrome) 未在客户端工作站上加载