sql - SQL选择名称相同但价格不同的行
问题描述
我有 2 张桌子COMMODITY_New
,COMMODITY_Old
每张桌子都有一些行。我需要从中选择COMMODITY_New
具有名称COMMODITY_Old.NAME
但价格不同的行。
例子:
COMMODITY_New:
+------+------+
|Name |Price |
+------+------+
|Apple |200 |
|Socks |100 |
+------+------+
COMMODITY_旧:
+------+------+
|Name |Price |
+------+------+
|Apple |180 |
|Socks |100 |
+------+------+
新的价格并不总是更高。
我的 SQL 代码:
SELECT
NAME, PRICE
FROM
COMMODITY_New
WHERE
COMMODITY_New.NAME IN (SELECT NAME FROM somedb2.COMMODITY_Old)
AND COMMODITY_New.PRICE = (SELECT PRICE FROM somedb2.COMMODITY_Old)
解决方案
您可以使用EXISTS
:
select n.*
from commodity_new n
where exists (select 1
from commodity_old o
where o.name = n.name and o.price <> n.price
);
推荐阅读
- php - 如何计算给定偏移量的数组?
- p5.js - p5.js 库函数不能与 javascript 类函数一起使用?
- security - 攻击向量或攻击复杂度等数据缺失时如何计算 CVSS v3.0 基础分数
- android - 此应用程序仅在 WinPE 或 WinRE 下运行,同时在 Android Studio 中探索
- javascript - 通过 javascript 进行表单验证 - 出现错误警报但保存数据
- html - 网格布局拉伸高度以适应内容,但保留其他网格单元高度
- nginx - nginx 无法启动并为 sudo nginx -t 抛出错误
- javascript - 在节点 API 中接收完整日期时间,而不是仅接收日期
- java - 在返回的排序 ArrayList 上使用覆盖的 toString 方法不会考虑换行符
- python-3.x - 为什么即使条件为假也执行行?