我最近在这里问了一个关于 SQL 查询的问题:Trouble wrapping head around complex SQL delete query
我现在明白,我正在尝试做的事情太复杂了,无法通过单个查询甚至多个查询来完成,而没有某种方法可以将结果保持在两者之间。因此我决定创建一个 bash 脚本(最终结果将与 cronjob 有关,因此 bash 是最直接的选择)。
考虑下表:
关联客户:
+-----------+-----------------+
| Client_id | Registration_id |
+-----------+-----------------+
| 2 | 2 |
| 3 | 2 |
| 3 | 4 |
| 4 | 5 |
| 3 | 6 |
| 5 | 6 |
| 3 | 8 |
| 8 | 9 |
| 7 | 10 |
+-----------------------------+
我想要做的是选择与特定关联的s列表中的所有Registration_id
s 。Client_id
Client_id
Registration_id
虽然我对 SQL 很陌生,但我发现这个查询相对容易:
SELECT `Registration_id` FROM `AssociatedClient` ac1
WHERE ac1.`Client_id` IN
(SELECT `Client_id` FROM `AssociatedClient` ac2
WHERE ac2.`Registration_id` = $reg_id);
where$reg_id
只是一个 bash 变量。
这可行,但我希望看到它通过self join完成,因为它看起来更好,尤其是在出现大量字符混乱的 bash 脚本中。恐怕我的 SQL 技能还达不到那么远。