mysql - MYSQL基于多个连接选择新列
问题描述
我仍在处理 MySQL 的一些问题,因此我们将不胜感激。
我有 3 张桌子——设备、状态、区域。
equipment:
+---------------+------+------------+
| current_state | id | ...columns |
+---------------+------+------------+
states:
+----------+-------------+
| state | zone_id |
+----------+-------------+
zones:
+-----+------+
| id | zone |
+-----+------+
在设备中,每行有一个 current_state。
在各州,每行有一个 zone_id。
在区域中,每行有一个区域。
我想将三个表作为子查询选择语句加入(甚至不确定这是否是一件事),并将输出返回为我选择的其他列中的 1 个别名列
+--------------+-------------+
| current_zone | ....columns |
+--------------+-------------+
示例预期输出是:
+------------+-------------+--------+------------------+--------------+---------+
| c_id | g_id | e_id | equipment_type | impressionId | email |
+------------+-------------+--------+------------------+--------------+---------+
| 1234 | ABC1234 | 0001 | VEST | 2032 |ab@yc.com|
| 1234 | 1234ABC | 0001 | SHIRT | 4372 |ab@yc.com|
| 1234 | DCBA123 | 0001 | CAN | 4372 |ab@yc.com|
| 1234 | DCBA321 | 0001 | JACKET | ab@yc.com |ab@yw.com|
| 4567 | abc321d | 0002 | SHIRT | 2032 |db@yw.com|
| 4567 | cba123d | 0002 | CAN | 4372 |db@yw.com|
| 4567 | def4rg4 | 0002 | JEANS | 3210 |db@yw.com|
+------------+-------------+--------+------------------+--------------+---------+
当前查询有多个连接已经引用了区域和状态表,以确定不同的值:
SELECT equipment.*,
...
FROM equipment
LEFT JOIN c on equipment.c_id = c.id
LEFT JOIN g on equipment.g_id = g.id
LEFT JOIN states on g.state = states.state
LEFT JOIN zones on zones.id = states.zone_id
本质上,我想做的是创建一个子查询,以便根据三个连接的结果创建一个新列,如下所示:
SELECT equipment.*,
(SELECT
equipment.current_state
FROM equipment
LEFT JOIN equipment.current_state = states.state
LEFT JOIN zones.id = states.zone_id
) as current_zone,
...
这甚至可能吗?我是否试图在错误的位置选择一个新列?
解决方案
感谢@TheImpaler,我能够清除我的标量子查询。在我看来,我认为我必须根据我想要的属性创建另一个连接,而实际上我所要做的就是创建一个条件标量子查询:
SELECT equipment.*,
(SELECT zones.zone
FROM zones
WHERE equipment.current_state = states.state
AND zones.id = states.zone_id
) as current_zone,
...
推荐阅读
- spring - 如何修复'从'XXX'重定向到'YYY'已被cors策略阻止
- javascript - Vue.js 如何在渲染完成后使用 vue-router 创建自定义链接?
- r - 如何在 ggtree 的 `facet_plot` 中为构面添加图例?
- javascript - try / catch / finally 不是多余的吗?
- azure-devops - Azure devops 中的 Publish Artifact 任务在自动触发时失败,但在手动排队时通过
- laravel - 在 Laravel 中重用控制器/模型
- android - 如何在 Jetpack compose 中使用 EditText 或 TextInput 小部件?
- uefi - 更新 EFI 分区表缓存
- php - 如何在不使用内置函数的情况下在 php 中找到一个数组的缺失元素到另一个数组?
- webview - 在启动画面处于活动状态时,是否有办法加载 webview?