同一个表查询一个字段相同时另一个字段是否有重复

时间:2021-03-16 15:03:33
ACCESS表:

编号(自增主键)      宿舍       床位号
1                                1              1
2                                1              2
3                                1              3
4                                1              1     
5                                2              1                 

期待结果:
宿舍                         重复床位号
1                               1

如果能是下面形式更好:
宿舍                         重复床位的主键
1                               1,4

查询语句咋写?

8 个解决方案

#1


SELECT * FROM TT A WHERE EXISTS(SELECT 1 FORM TT WHERE A.宿舍=宿舍 AND A.床位号=床位号 AND A.ID<>ID)



宿舍                         重复床位的主键
 1                               1,4
用VBA循环上述记录集,可得到

#2




引用 1 楼 WWWWA 的回复:
SELECT * FROM TT A WHERE EXISTS(SELECT 1 FORM TT WHERE A.宿舍=宿舍 AND A.床位号=床位号 AND A.ID<>ID)



宿舍                         重复床位的主键
 1                               1,4
用VBA循环上述记录集,可得到


额,没看明白,是我描述不清楚。
我用的ACCESS,表名是“学生信息管理”,就这一个表。那TT和A貌似是两个?另外ACCESS支持子查询吗

#3


TT:工作表名,自行修改
A:表别名
ACCESS支持子查询吗:支持

#4


引用 3 楼 WWWWA 的回复:
TT:工作表名,自行修改
A:表别名
ACCESS支持子查询吗:支持


引用 3 楼 WWWWA 的回复:
TT:工作表名,自行修改
A:表别名
ACCESS支持子查询吗:支持


还是不能运行哎,adapter.Fill(customers)的时候提示语法错误。 在查询表达式 'EXISTS(SELECT 1 FORM 学生信息管理 WHERE A.宿舍=宿舍 AND A.床位号=床位号 AND A.ID<>ID)' 中。

#5


你的运行环境,直接在ACCESS中运行,ACCESS什么版本?你的代码

#6


我是在VB.NET里面,
    '连接数据库并执行一个SQL命令
    Public Shared Function CreateCmds(ByVal queryString As String) As DataSet
        Using connection As New OleDbConnection(PublicValue.dbcs)
            Dim adapter As New OleDbDataAdapter()
            adapter.SelectCommand = New OleDbCommand(queryString, connection)
            Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
            connection.Open()
            Dim customers As DataSet = New DataSet
             adapter.Fill(customers)
            Return customers
        End Using
    End Function

#7


直接在ACCESS中运行上述代码,应该没有问题

#8


直接运行不了
。。。
去掉EXISTS有希望了。。。。谢谢关注!

#1


SELECT * FROM TT A WHERE EXISTS(SELECT 1 FORM TT WHERE A.宿舍=宿舍 AND A.床位号=床位号 AND A.ID<>ID)



宿舍                         重复床位的主键
 1                               1,4
用VBA循环上述记录集,可得到

#2




引用 1 楼 WWWWA 的回复:
SELECT * FROM TT A WHERE EXISTS(SELECT 1 FORM TT WHERE A.宿舍=宿舍 AND A.床位号=床位号 AND A.ID<>ID)



宿舍                         重复床位的主键
 1                               1,4
用VBA循环上述记录集,可得到


额,没看明白,是我描述不清楚。
我用的ACCESS,表名是“学生信息管理”,就这一个表。那TT和A貌似是两个?另外ACCESS支持子查询吗

#3


TT:工作表名,自行修改
A:表别名
ACCESS支持子查询吗:支持

#4


引用 3 楼 WWWWA 的回复:
TT:工作表名,自行修改
A:表别名
ACCESS支持子查询吗:支持


引用 3 楼 WWWWA 的回复:
TT:工作表名,自行修改
A:表别名
ACCESS支持子查询吗:支持


还是不能运行哎,adapter.Fill(customers)的时候提示语法错误。 在查询表达式 'EXISTS(SELECT 1 FORM 学生信息管理 WHERE A.宿舍=宿舍 AND A.床位号=床位号 AND A.ID<>ID)' 中。

#5


你的运行环境,直接在ACCESS中运行,ACCESS什么版本?你的代码

#6


我是在VB.NET里面,
    '连接数据库并执行一个SQL命令
    Public Shared Function CreateCmds(ByVal queryString As String) As DataSet
        Using connection As New OleDbConnection(PublicValue.dbcs)
            Dim adapter As New OleDbDataAdapter()
            adapter.SelectCommand = New OleDbCommand(queryString, connection)
            Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
            connection.Open()
            Dim customers As DataSet = New DataSet
             adapter.Fill(customers)
            Return customers
        End Using
    End Function

#7


直接在ACCESS中运行上述代码,应该没有问题

#8


直接运行不了
。。。
去掉EXISTS有希望了。。。。谢谢关注!