我正在尝试结合WHERE,AND或OR。但是我得到的结果不是我想要的:S 我正在尝试从表中选择名称,其中combobox1可以位于2-4列中的任何一个中,并且类型和区域必须为Italy和Bus。
string SqlQry = "SELECT [Name] FROM [Table] WHERE [Column 2] = @1 OR [Column 3] = @2 OR [Column 4] = @3 AND [Region] = @4 AND [Type] = @5 ORDER BY [Name] ASC";
cmd.Parameters.AddWithValue("@1", Combobox1.SelectedItem);
cmd.Parameters.AddWithValue("@2", Combobox1.SelectedItem);
cmd.Parameters.AddWithValue("@3", Combobox1.SelectedItem);
cmd.Parameters.AddWithValue("@4", "Italy");
cmd.Parameters.AddWithValue("@5", "Bus");
任何帮助将不胜感激。
答案 0 :(得分:5)
添加括号
WHERE
(
[Column 2] = @1 OR [Column 3] = @2 OR [Column 4] = @3
)
AND [Region] = @4
AND [Type] = @5
由于运算符优先级and
的绑定要强于or
。
您可以将其改进为
WHERE @1 in([Column 2], [Column 3], [Column 4])
AND [Region] = @2
AND [Type] = @3
cmd.Parameters.AddWithValue("@1", Combobox1.SelectedItem);
cmd.Parameters.AddWithValue("@2", "Italy");
cmd.Parameters.AddWithValue("@3", "Bus");