需要结合WHERE,AND或

时间:2018-10-20 18:07:20

标签: c# sql

我正在尝试结合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");

任何帮助将不胜感激。

1 个答案:

答案 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");