繁体   English   中英

从单个表中组合2个SQL查询并能够对其进行更新

[英]Combining 2 SQL Queries From A Single Table and Being Able to Update it

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

对于这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(Username)耦合的信息,无论定界符内部如何。

因此,我为这两个查询创建了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

我认为您应该能够将这样的条件分组:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM