Sql UNION ALL仅返回第一列
我正在尝试将一些数据从旧的Access数据库迁移到新的Access数据库,一些列发生了更改,例如,以前划分为街道、号码、城市和邮政编码的旧“地址”现在只有一列。 因此,在更新新数据库之前,我需要将所有列合并为一个列。 我没有收到任何错误和警告,尽管它只显示更新数据库的第一列 我想做的是:Sql UNION ALL仅返回第一列,sql,vb.net,ms-access,Sql,Vb.net,Ms Access,我正在尝试将一些数据从旧的Access数据库迁移到新的Access数据库,一些列发生了更改,例如,以前划分为街道、号码、城市和邮政编码的旧“地址”现在只有一列。 因此,在更新新数据库之前,我需要将所有列合并为一个列。 我没有收到任何错误和警告,尽管它只显示更新数据库的第一列 我想做的是: //Open the connection with the database oldBuys.Open() newBuys
//Open the connection with the database
oldBuys.Open()
newBuys.Open()
Dim codTable As New DataTable
Dim codTemp As Integer
Dim addressTable As New DataTable
Dim tempValue As String
//Command to find all the client codes on the new database
Dim findAllCodes As New OleDb.OleDbDataAdapter("SELECT Cod FROM Data", newBuys)
findAllCodes .Fill(codTable)
//Search for all the adress of that code
For i = 0 To codTable.Rows.Count - 1
codTemp = codTable.Rows(i).Item(0)
//Union all the values
Dim findAllAdress As New OleDb.OleDbCommand("SELECT Street FROM Data" & _
" WHERE Cod=@cod1 UNION ALL SELECT Number FROM Data WHERE Cod=@cod2 UNION ALL SELECT City" & _
" FROM Data WHERE Cod=@cod3 UNION ALL SELECT State FROM Data WHERE Cod=@cod4 UNION" & _
" ALL SELECT postalCode FROM Data WHERE Cod=@cod5", cnCompraAntigo)
findAllAdress.Parameters.AddWithValue("@cod1", codTemp)
findAllAdress.Parameters.AddWithValue("@cod2", codTemp)
findAllAdress.Parameters.AddWithValue("@cod3", codTemp)
findAllAdress.Parameters.AddWithValue("@cod4", codTemp)
findAllAdress.Parameters.AddWithValue("@cod5", codTemp)
//Transfer the value to the variable
tempValue = findAllAdress.ExecuteScalar
//Try to update the new database
Dim updateAllAdress As New OleDb.OleDbCommand _
("UPDATE Data SET fullAdress=@end WHERE Cod=@cod", newBuys)
updateAllAdress.Parameters.AddWithValue("@end", tempValue)
updateAllAdress.Parameters.AddWithValue("@cod", codTemp)
updateAllAdress.ExecuteNonQuery()
Next
newBuys.Close()
oldBuys.Close()
我猜想您需要的就是这个(
|
是SQL字符串连接运算符):
您需要这样的SQL选择:
SELECT [Street] & ' ' & [Number] & ' ' & [City] & ' ' & [State] & ' ' & [postalCode]
FROM Data WHERE Cod = ...
SELECT Street & ' ' & Number & ' ' & PostalCode & ' ' & City & ' ' & State
FROM Data
WHERE Cod=@cod1
您尝试执行的操作可以通过在SELECT语句中连接列来完成,如下所示:
SELECT [Street] & ' ' & [Number] & ' ' & [City] & ' ' & [State] & ' ' & [postalCode]
FROM Data WHERE Cod = ...
SELECT Street & ' ' & Number & ' ' & PostalCode & ' ' & City & ' ' & State
FROM Data
WHERE Cod=@cod1
此选择在假设所有列都是字母数字的情况下工作,如果其中一些列是数字的,则必须在连接之前转换列
UNION语句用于合并不同查询的结果,将结果“表”合并到一个结果集中
例如,您可以选择一个表的所有阳性名称,并在另一个select语句中检索所有阴性名称。使用UNION,您可以将两个select语句组合在一个结果中
EDIT:我已更正了用+for&替换的语句,以将其调整为访问语法。UNION用于组合来自不同查询的行,您可能希望组合列,在这种情况下,您的查询应该将它们连接起来。谢谢!你的答案是最完整的,所以我选择你的答案是正确的。结果是:Dim Findallar打扮成新的OleDb.OleDbCommand(“从数据中选择街道、号码、城市、州、邮政编码,其中Cod=@Cod”,Oldby)