sql - 更新语句 - 不满足条件的地方
问题描述
我正在运行下面的 sql 语句,但看起来好像每一行都在更新并且条件被忽略了。我要更新一行的条件是:
- 仪器静态.client_sentiment_long >50
- market_data.days_change => 0
查询:
UPDATE market_data
SET sentiment_inline = 'TRUE'
WHERE EXISTS (SELECT s.epic,s.client_sentiment_long,s.client_sentiment_short,m.days_change,m.sentiment_inline
FROM instrument_static s JOIN
market_data m
ON m.epic = 'MARKET:' || s.epic
WHERE s.client_sentiment_long > 50 AND m.days_change >=0
);
解决方案
我很确定你想要一个相关的子查询:
UPDATE market_data m
SET sentiment_inline = 'TRUE'
WHERE EXISTS (SELECT 1
FROM instrument_static s
WHERE m.epic = 'MARKET:' || s.epic AND
s.client_sentiment_long > 50 AND
m.days_change >= 0
);
这会将子查询中的条件与您可能要更新的特定行联系起来。否则,条件是检查是否存在任何行market_data
——这不是你想要的。
我会将最终条件移至外部WHERE
,因此内容如下:
WHERE m.days_change >= 0 AND
EXISTS (SELECT 1
FROM instrument_static s
WHERE m.epic = 'MARKET:' || s.epic AND
s.client_sentiment_long > 50
);
推荐阅读
- html - BOOTSTRAP 中带有图像的卡片
- java - 错误:尝试在空对象引用上调用虚拟方法
- c++ - QAbstractItemModel - QModelIndex 对象在创建时是否应该被缓存?
- python - 如何在pygame中显示一个由点组成的圆圈?
- node.js - Websocket 连接失败
- c++ - 使用arduino和H桥的PWM正弦波
- visual-studio-code - VS 代码变量;如何引用从属字段?
- linux - 尝试在 Linux 上的 CLion 中创建 Qt5 项目时,CMake 找不到 Qt5
- android - 如何从 android studio 的终端中删除 [gradle ' --refresh-dependencies' ] 命令。现在无法构建或运行我的应用程序
- java - super 在不扩展任何其他类的私有嵌套类中指的是什么?