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'旋出。 –