我使用下面的代码编写一个MySql查询,以获取包含在数组中的id的记录。
它有效,但还有更好的方法吗? (而不是多个“OR”)
myArr = Cells(1, 1).CurrentRegion.Value
SqlStr = "SELECT * FROM mytable WHERE id ='"
For i = 1 To UBound(myArr)
SqlStr = SqlStr & myArr(i, 1) & "' OR id ='"
Next i
SqlStr = Left(SqlStr, Len(SqlStr) - 7)
我希望这个问题不是愚蠢的:我正在努力提高自己。
提前致谢
答案 0 :(得分:1)
您可以更改代码以包含 IN 运算符,它仍然会循环,但不会有多个OR
Dim inVar As String
myArr = Cells(1, 1).CurrentRegion.Value
SqlStr = "SELECT * FROM mytable WHERE id IN ("
For i = 1 To UBound(myArr)
inVar = inVar & ",'" & myArr(i, 1) & "'"
Next i
SqlStr = SqlStr & Right(inVar, Len(inVar) - 2) & ")"
序列就像,
SELECT * FROM myTable WHERE id IN ('1', '2')
答案 1 :(得分:0)
您可以使用:
SELECT * FROM mytable WHERE id IN (1, 2, 3, ...)
其中1,2,3是您感兴趣的ID。