【发布时间】:2014-06-07 04:53:24
【问题描述】:
这是我的原始表:
Name Age Group
Paul 20 1
Paul 20 2
Paul 30 3
Paul 30 3
Paul 2
Paul 2
Joe 15 1
Mary 20 3
如何编写 MS Access SQL 以根据以下条件排除记录?
理想情况下,我想创建一个额外的“标志”列来填充值“真”以排除要排除的记录,因为我以后可能会进一步排除标准。
-
在具有相同“名称”的记录中:
(1) 他们的“组”是 1 或 2
(2) 他们的“年龄”相同但不是空白
对于具有唯一“名称”的记录,保持原样
在这种情况下,只会排除第一条和第二条记录。
更新:
@xQbert,非常感谢!
为方便起见,我想先为重复的“Paul”列设置标志,但代码返回错误:
UPDATE A
SET A.Flag = "True"
FROM
(
SELECT Name
FROM tblTest
GROUP BY Name
HAVING COUNT(*) > 1
) T INNER JOIN tblTest A ON T.Name = A.Name
但这很好用。
SELECT A.Name, A.Age, A.Group
FROM
(
SELECT Name
FROM tblTest
GROUP BY Name
HAVING COUNT(*) > 1
) T INNER JOIN tblTest A ON T.Name = A.Name
非常感谢。
【问题讨论】:
-
这听起来有点像家庭作业......无论如何......你有什么数据类型列?年龄是文本列还是数字列?空白你打算为NULL吗?
-
这不是家庭作业,只是对 SQL 来说相当新,所以需要一些想法。年龄是数字,银行表示 NULL,但我认为这对答案并不重要。谢谢。