从单个表中组合2个SQL查询并能够更新它

时间:2014-02-21 01:47:40

标签: sql

我有一个包含23个字段的数据库。在23我需要操纵其中的8个,我们称之为F1,F2,F3 ...... F8(用户名)。

对于8个字段中的每个字段,用户可以限制它们之间的信息。例如,用户只想查看F1中从字母A到J开头的信息加上他们可以指定8个字段之间的任何排序顺序,这意味着他们希望首先按F8然后按F6然后按F2等排序。这就是它的样子:

  A     F2Upper  F3Upper ... F8Upper
  J     F2Lower  F3Lower ... F8Lower
Order1  Order2   Order3  ... Order8
  F1       F2       F3         F8(UserName)

我已经有了一个有效的SQL查询。最近该公司增加了一项新标准。除了所有数据分隔之外,他们还希望所有显示的信息都包含F4中的'~Prio'和F8(用户名),而不管分隔符内的任何内容。

所以我为2个查询创建了一个UNION语句,但它无法更新。我需要数据可更新。最好的方法是什么?所以我的查询是这样的:

Select *
  From tblTest
 WHERE F4 Like '~Prio'
   AND (F8 = CurrentUser or F8 = Location)
UNION
Select *
  From tblTest
 WHERE (F1 >= F1Upper AND F1 <= F1Lower)
   AND (F2 >= F2Upper AND F2 <= F2Lower)..
 .
   AND (F8 >= F8Upper AND F8 <= F8Lower)
 ORDER By Order1, Order2,
          Order3 .. .
          Order8

1 个答案:

答案 0 :(得分:0)

我认为你应该能够对这样的标准进行分组:

Select *
  From tblTest
 WHERE ((F1 >= F1Upper AND F1 <= F1Lower) AND
       (F2 >= F2Upper AND F2 <= F2Lower)..
        . AND (F8 >= F8Upper AND F8 <= F8Lower))
    or (F4 Like '~Prio' AND (F8 = CurrentUser or F8 = Location))
 ORDER By Order1, Order2,
 Order 3 .. .
 Order 8