2

我的问题与SQL 如何创建重复记录?. 但是,我正在尝试在 Access 中执行此操作,但那里的解决方案似乎都不适用。最好,我想要一个 SQL 语句。

谢谢。

4

2 回答 2

2

该链接问题的已接受答案可适用于 Access。num从用户界面创建表。如果要使用 DDL 语句创建表,请使用它。

Dim strDdl As String
strDdl = "CREATE TABLE num (" & vbCrLf & _
    "i INTEGER PRIMARY KEY" & vbCrLf & _
    ");"
Debug.Print strDdl
CurrentProject.Connection.Execute strDdl

加载num表。在 Access 中,一个 VBA 过程会很方便。

Public Sub Load_Num_table()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim x As Long

    Set db = CurrentDb
    Set rs = db.OpenRecordset("num", dbOpenTable, dbAppendOnly)
    For x = 1 To 100
        rs.AddNew
        rs!i = x
        rs.Update
    Next x
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub

准备好num表和名为tableX的其他表后,使用此 SQL 语句返回包含重复行的行集。

SELECT t.id, t.name
FROM
    tableX AS t
    INNER JOIN num 
    ON num.i <= t.count;

SELECT声明与@ypercube 在接受的另一个问题的答案中建议的唯一真正区别是,INNER JOIN而不是只是JOIN. Access' db 引擎不会JOIN单独接受;您必须指定连接类型(内、左或右)。

于 2012-10-21T03:28:50.637 回答
0

Insert Into TableName (field 1, field 2, ...) Select * From TableName;

如果你有主键会出错。

于 2012-10-21T02:49:58.563 回答