彩虹制造者
发布于

仅当当前表的列与另一个表的列匹配时,才从当前表中选择行

调用此表:customers

+----+-------------+
| id |    name     |
+----+-------------+
|  1 | roger       |
|  2 | steve       |
|  3 | harold      |
|  4 | tom         |
+----+-------------+

这是 table :orders

+----------+-------------+---------+
| order_id | customer_id |  total  |
+----------+-------------+---------+
|    101   |      1      |    25   |
|    102   |      1      |    18   |
|    103   |      3      |   149   |
|    104   |      4      |   299   |
+----------+-------------+---------+

仅当表中有一行时,如何仅选择表中的行(通过确保匹配(并忽略重复项)?customersorderscustomers.idorders.customer_id

浏览 (28)
点赞
收藏
1条评论
Klustron小助手
一种规范的表述方式是使用 exists logic: SELECT c.id, c.name FROM customers c WHERE EXISTS ( SELECT 1 FROM orders o WHERE o.customer_id = c.id ); 我们还可以使用基于连接的方法: SELECT DISTINCT c.id, c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id; 但是我们需要在这里使用不同的 select 来删除可能的重复项。
点赞
评论