【发布时间】:2016-05-15 21:56:34
【问题描述】:
我正在尝试在 Access 中创建一个 SQL 查询,当 KEY 与三种非处方药(Motrin、Tylenol 和 Bayer)相关联时,它将返回所有字段(SELECT *)。在下面的示例中,AMYZ32874 的所有行都将被返回,WillyV32906 的任何行都不会被返回,因为他只与 3 种药物中的 2 种药物相关。
起始数据:
Key Name DOB OTC
AmyZ32874 Amy Z 1/1/1990 Motrin
AmyZ32874 Amy Z 1/1/1990 Tylenol
AmyZ32874 Amy Z 1/1/1990 Bayer
WillyV32906 Willy V 2/2/1990 Motrin
WillyV32906 Willy V 2/2/1990 Tylenol
WillyV32906 Willy V 2/2/1990 Tylenol
期望的结果:
Key Name DOB OTC
AmyZ32874 Amy Z 1/1/1990 Motrin
AmyZ32874 Amy Z 1/1/1990 Tylenol
AmyZ32874 Amy Z 1/1/1990 Bayer
我被困住了....这是我最近的尝试。
SELECT *
FROM SAMPLEDB
WHERE OTC IN ('Tylenol', 'Motrin', 'Bayer') and Key in
(SELECT Key FROM SAMPLEDB
GROUP BY Key HAVING COUNT (Key) > 2);
【问题讨论】:
-
旁注:尽可能避免在表格中使用保留字(如
Key)。它们会使更复杂的 SQL 语句变得混乱,有时会给您带来意想不到的结果。如果您无法避免该名称(有时您不能),请尝试将其括在括号中以帮助减少混淆。 -
谢谢 C. White。感谢您的指导。