You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access查询同一字段用AND运算符无结果?求筛选双旅行团客户方法

问题原因

你犯了一个逻辑错误:用AND要求同一行的TourID同时等于20WJHC和24WJHC——同一字段不可能同时拥有两个不同的值,所以查询自然返回空结果。你要找的是同一个客户分别参加了这两个旅行团的记录,需要换一种写法。

解决方案

以下是几种可行的写法:

方法1:分组统计法(推荐)

通过分组客户ID,筛选出同时包含两个旅行团的记录:

SELECT c.LastName, c.FirstName
FROM tbl_Customers c
INNER JOIN tbl_Tour_Bookings tb ON c.CustomerID = tb.CustomerID
WHERE tb.TourID IN ('20WJHC', '24WJHC')
GROUP BY c.CustomerID, c.LastName, c.FirstName
HAVING COUNT(DISTINCT tb.TourID) = 2;
  • 用IN先筛选出两个旅行团的所有预订记录
  • 按客户分组后,用HAVING COUNT(DISTINCT tb.TourID) = 2确保客户同时参加了这两个团

方法2:自连接法

将预订表和自身连接两次,分别匹配两个旅行团:

SELECT c.LastName, c.FirstName
FROM tbl_Customers c
INNER JOIN tbl_Tour_Bookings tb1 ON c.CustomerID = tb1.CustomerID
INNER JOIN tbl_Tour_Bookings tb2 ON c.CustomerID = tb2.CustomerID
WHERE tb1.TourID = '20WJHC' AND tb2.TourID = '24WJHC';
  • 每个连接对应一个旅行团的预订记录,确保同一个客户存在两条不同的预订记录

方法3:子查询法

先筛选出参加第一个团的客户,再从中筛选参加第二个团的:

SELECT LastName, FirstName
FROM tbl_Customers
WHERE CustomerID IN (
    SELECT CustomerID FROM tbl_Tour_Bookings WHERE TourID = '20WJHC'
)
AND CustomerID IN (
    SELECT CustomerID FROM tbl_Tour_Bookings WHERE TourID = '24WJHC'
);
  • 两个子查询分别找出参加对应旅行团的客户ID,取交集就是同时参加两个团的客户

内容的提问来源于stack exchange,提问作者John C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:17:09