SELECT *
FROM Food
WHERE (Name = 'Apple' AND <condition A>)
OR (Name = 'Biscuit' AND <condition B>)
OR (Name = 'Chocolate' AND <condition C>)
現在,雖然是正確這不是從性能的角度來看可取的,因爲條件A,B,和C是不被驅動的數據(它們不DON從行改變到行)。因此,您可以通過動態構建SQL來使用所有可能條件的排列 - 使用IN子句並動態構建其字符串。
另一種解決方案是組裝最終導致客戶端運行每個單獨SELECT(僞代碼):
if A then {
result1 = execute("SELECT * FROM Food WHERE Name = 'Apple')
}
if B then {
result2 = execute("SELECT * FROM Food WHERE Name = 'Biscuit')
}
if C then {
result2 = execute("SELECT * FROM Food WHERE Name = 'Chocolate')
}
result = join(result1, result2, result3)
該解決方案可以正常工作,當你有一個或兩個真實情況的案件比例很高。
是怎麼想的計算機編程語言構建這個動態SQL的?任何特定的? – 2010-03-15 15:42:56
要使用的SQL方言是T-SQL。 – TrustyCoder 2010-03-15 15:48:01
T-SQL的意思是Sybase和/或SQL Server – 2010-03-15 15:55:01