0

我正在尝试编写这样的更新查询:

Update entryTable set type='String' Where ID='Entry_001' or SecondID='Entry_002' or ThirdID="Entry_003" or BackupID="Entry_004"

但它的作用是,如果找到上述任何参数,即 ID、SecondID、ThirdID、BackupID,它会更新我的表。

但是我必须编写一个更新查询,用户可以传递任何参数,并且我必须根据用户传递的那些参数进行过滤,即用户只能传递 ID,或者他可以同时传递 ID 和 SecondID,或者他可以传递 SecondID 或 ThirdID或者 all 或者他只能通过 BackupID 等等。基本上我想编写一个更新查询,它将接受任何参数并根据这些参数进行更新。希望你明白我的问题。提前致谢。

4

1 回答 1

2

您应该尝试更仔细地编写查询,而不是总是添加所有条件。目前尚不清楚您使用什么语言或框架来获取此查询,因此我无法在那里提供具体建议。

结果是您将从以下内容开始:

UPDATE entryTable SET type='String' WHERE

然后,您将一一附加条件。通常最好将这些添加到数组中,然后根据需要使用“OR”或“AND”连接数组:

[ [ "ID=?", "Entry_001" ], [ "SecondID=?", "Entry_002" ] ]

那将被转化为:

[ "UPDATE entryTable SET type='String' WHERE ID=? OR SecondID=?", "Entry_001", "Entry_002" ]

然后,您将使用数据库库的转义功能将这些占位符和值绑定在一起。

您可能还想在盲目发布更新之前尝试获取记录,然后仅根据您的主键进行更新:

SELECT ID FROM entryTable WHERE ID='Entry_001' ...

然后,如果返回单个记录,则执行更新:

UPDATE entryTable SET type='String' WHERE ID=?

如果它返回多条记录,您会提示用户更好地定义他们的搜索。

于 2013-06-05T14:44:35.253 回答