sql - 如何添加一行以检查它是否存在?
问题描述
我目前有一张桌子 A
+--------+---------+
| eventID | hostID |
+--------+---------+
| 62 | 1 |
| 61 | 5 |
+--------+---------+
和表 B
+--------+---------+
| userID | eventID |
+--------+---------+
| 1 | 61 |
| 5 | 61 |
+--------+---------+
我想创建一个查询,它左连接表 A 和表 B,并检查表 B 中是否存在我的表 A eventID 和 hostID 的 evnetID 和 userID。如果存在,则 stats 将为 1,否则将为 0。为了更直观地理解,我希望我的输出如下所示:
+--------+-----------+------------+
|eventID | hostID | status |
+--------+-----------+------------+
| 62 | 1 | 0 |
| 61 | 5 | 1 |
+--------+-----------+------------
如您所见,表B中不存在eventID = 62和hostID = 1,因此status将为0,而eventID = 61而hostID = 5存在,因此状态将为1。
解决方案
使用EXISTS
表达式可以更有效地解决此问题:
SELECT eventID, hostID,
CASE WHEN EXISTS (SELECT *
FROM b
WHERE b.eventID = a.eventID
AND b.userID = a.hostID) THEN 1
ELSE 0
END AS status
FROM a
推荐阅读
- css - 在不换行的情况下使用徽章内的菜单。来自 react-bootstrap 框架
- bash - -bash: cd: /tensorflow1: ubuntu 中没有这样的文件或目录,但是文件在那里
- azure-devops - 在史诗可以关闭之前强制关闭子任务的规则
- ubuntu - Ubuntu 18.04:在域帐户下运行服务
- methods - Groovy multi-methods
- libgdx - LibGDX ModelInstance - can't reset scale, setting the transform while scaled deforms the model
- python - 如何突出显示绘图中的区域以指示 Python 中的滑动窗口?
- jquery - Resetting Modal Wizard to Original State When Input Field Clicked
- reactjs - 删除具有相同组件名称的先前形状组件时如何避免形状改变大小和位置?康瓦
- gmail - Attached EML files in emails sent via GMAIL-APIs are not viewable in GMAIL