1
我有以下表如何查询“换位”复杂约束表
table1
id name value
-----------------------
1 n1 v11
1 n2 v12
1 ... ...
1 nm v1m
2 n1 v21
2 n2 v22
2 ... ...
2 nm v2m
...
...
k n1 vk1
k n2 vk2
k ... ...
k nm vkm
在此表中,每个ID必须具有相同的名称集,虽然我们不知道它们是什么W/O读桌子。
我想获得所有的ID具有下面的约束
1)如果名字= NI,则值= 42 2)如果名字= NJ,然后值= 24
如果上述表写成如下,那么我们可以做
select id from table2 where ni = 42 and nj = 24
table2
id n1 n2 ... nm
---------------------------
1 v11 v12 ... v1m
2 v21 v22 ... v2m
...
k vk1 vk2 ... vkm
但是在原始table1中,我不知道这样做的最佳方式是什么。 也许对于这个约束,可以有一个特殊查询。但是,如果约束更复杂,如 n1!= 19或不(n2 = 55和n3 = 44) 我找不到一个通用的解决方案。
我可以让table1定义为table2。但是为了给table2添加一个新名字,我们必须通过添加一个新的列来更改table2的设计......有没有更好的解决方案?谢谢。
Biegeieisen:通过和最大有趣的用途组!另外'查询计划'显示这个查询也是有效的。谢谢。 –
@JoeC如果您需要更改值,只需在'table1'中执行此操作,然后使用我的查询将'table2'旋出。 –