sql - 仅当表 a 包含表 b 中的相应 ID 时才返回表 a 的值
问题描述
我曾尝试寻找答案,但很难提出问题或制定搜索以找到答案。所以这里。
我有存储客户信息的表 A 和存储客户请求的表 B。我正在构建一个搜索工具,我想在其中搜索 Bob 帮助过的客户。这变得很棘手,因为我只希望 Bob 帮助的每个客户返回 1 行。使用普通连接将返回多行,因为 Bob 帮助该客户的请求不止一个。
见下表结构。(还不能添加图片:()
例如,以下查询返回多行(5 行,因为 Bob 处理了 5 个请求)。
SELECT a.ClientName, b.AttendedBy
FROM TableA A
JOIN TableB b ON a.ClientId = b.ClientId
WHERE b.AttendedBy = 'Peter'
所以我想要的结果如下:
如果我想知道 Peter 参加过哪些客户,那么结果 1,如果我想知道 Andrew 参加过哪些客户,那么结果 2。如果我搜索“Michael”,则必须为该客户返回 NO 结果。所以基本没什么。仅显示客户端请求中存在“attendedBy”的客户端(表 b)。
我尝试了多种方法,例如 WHEREclause 中的 DISTINCT SELECT、STUFF() 函数、TOP 1、LIMIT,但我没有获胜。协助将不胜感激。谢谢!
编辑:ps、表 B 和 B 具有其他具有唯一值的列,因此使用 DISTINCT 仍会为彼得参加的同一客户返回多行。
解决方案
如果我理解正确,您只需要select distinct
:
SELECT DISTINCT a.ClientName, b.AttendedBy
FROM TableA A JOIN
TableB b
ON a.ClientId = b.ClientId
WHERE b.AttendedBy = 'Peter'
推荐阅读
- android - 离子 android:navigationBarColor
- ionic-framework - 离子应用程序 url 找到 localhost 而不是文件夹
- php - 如何将数组从 Android 发送到 PHP 服务器
- sql - SQL select distinct 当一列在另一列大于
- java - 如何延迟函数调用?
- javascript - 使用javascript计算最近的礼物位置
- python - ValueError: 变量 conv/W 已经存在,不允许
- java - 我可以使用 java 中的套接字连接两台计算机吗?
- sql - 如何按班次分割一天的时间?
- php - PHP 从 mysql 获取数据并相应显示