我有兩張桌子:
表 A:
| 姓名 | 價值 |
|---|---|
| 美國廣播公司 | 95 |
| XYZ | 85 |
表 B:
| 類別 | 價值 |
|---|---|
| 最大值 | 90 |
| 最小值 | 80 |
我想實作這個結果 85 介于 80 和 90 值之間,所以我們只過濾掉 XYZ 而不是 ABC :
| 結果 |
|---|
| XYZ |
我正在嘗試如下:
SELECT Name as Result from TableA a, TableB b, TableB c
where a.value < b.value and a.value > c.value
and b.value=c.value and 1=1;
有一個更好的方法嗎?
uj5u.com熱心網友回復:
擺脫b.value=c.value,這是過濾掉所有記錄并從表中選擇適當的類別b和c:
SELECT Name as Result from TableA a, TableB b, TableB c
where a.value < b.value and b.category = 'MaxVal'
and a.value > c.value and c.category = 'MinVal';
這是另一種選擇,在我看來更具可讀性:
SELECT Name as Result FROM TableA
WHERE a.value > (SELECT value FROM TableB WHERE category = 'MinVal')
AND a.value < (SELECT value FROM TableB WHERE category = 'MaxVal');
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/428239.html
上一篇:SQL比較2個連接到同一個表
下一篇:如何將陣列的行更改為相反的
