sql - SQL SELECT 比较两个表中的值(没有 UNION ALL)
问题描述
我有表 T1:
ID IMPACT
1 3
我有桌子 T2
PRIORITY URGENCY
1 2
我需要从 T1 表中进行 SELECT。
我想从 T1 中获取 IMPACT 大于 T2 中的优先级的所有行。
我在一些 IBM 应用程序中工作,其中只能在第一个表 T1 的 WHERE 子句之后从 SQL 语句开始。
所以查询(不幸的是)必须始终以"SELECT * FROM T1 WHERE..."
This cannot be changed 开头(请记住这一点)。
这意味着我不能在"FROM T1"
部分之后使用一些 JOIN 或 UNION ALL 语句,因为我只能在 WHERE 子句之后开始编写 SQL 查询。
SELECT * FROM T1
WHERE
IMPACT> SELECT PRIORITY FROM T2 WHERE URGENCY=2
但是我收到了这个声明的错误。请是否可以编写以以下开头的 SQL 查询:
SELECT * FROM T1
WHERE
解决方案
你想要一个子查询,所以你只需要括号:
SELECT *
FROM T1
WHERE IMPACT > (SELECT T2.PRIORITY FROM T2 WHERE T2.URGENCY = 2)
这假定子查询返回一行(或零行,在这种情况下不返回任何内容)。如果子查询可以返回多行,您应该问另一个问题并且非常明确地说明您想要做什么。
一种合理的解释(不止一行)是:
SELECT *
FROM T1
WHERE IMPACT > (SELECT MAX(T2.PRIORITY) FROM T2 WHERE T2.URGENCY = 2)
推荐阅读
- fortran - 尝试比较旧 fortran 中的不同类型
- python - 对 pandas DataFrame 中特定行的简单计算
- python - Django 属性错误 Str 对象主页
- c# - 使用 MVVM 模型将树视图和数据网格绑定到数据集
- azure-functions - 如何在 Azure Durable Functions 中保留变量
- python - 如何在正则表达式上匹配冒号后的字符串
- php - 如何在php中使用array_shift函数检查队列中的第一个人
- python - 在python中具有多个反斜杠匹配的正则表达式
- sql - Oracle Sql - 在 IN 语句中包含子查询时,脚本速度极慢
- python - Pandas 按列分组和排序,需要添加逗号分隔的条目