[英]SQL Using Between for two tables
嗨我想根據位於另一個表的兩列之間的值從表中獲取數據,在SQL下面解釋我的目的:
SELECT * FROM TABLE 1 WHERE 1.FIELD1 BETWEEN
(SELECT 2.RANGE_FROM FROM TABLE 2) AND (SELECT 2.RANGE_TO FROM TABLE 2)
這不起作用,因為我收到錯誤:
Error: SQL0811N The result of a scalar fullselect, SELECT INTO statement, or VALUES INTO statement is more than one row. SQLSTATE=21000
(State:21000, Native Code: FFFFFCD5)
這很明顯,因為兩個子查詢都返回多行。 所以我想寫一個SQL來執行上面的功能而不會出錯。 該平台是IBM DB2
。
編輯 :
好吧我想我通過使用條件加入2個表來解決這個問題:
SELECT * FROM TABLE1 A, TABLE2 B WHERE A.FIELD1 BETWEEN B.RANGE_FROM AND B.RANGE_TO
但是需要進行更多測試。
我懷疑你想檢查table1列值是否在table2的(某一行)的2列之間:
SELECT a.*
FROM TABLE1 AS a
WHERE EXISTS
( SELECT 1
FROM TABLE2 AS b
WHERE a.FIELD1 BETWEEN b.RANGE_FROM AND b.RANGE_TO
) ;
這樣,你就沒有table1
重復,所以不需要DISTINCT
。
還要注意條件:
a.FIELD1 BETWEEN b.RANGE_FROM AND b.RANGE_TO
相當於:
b.RANGE_FROM <= a.FIELD1 AND a.FIELD1 <= b.RANGE_TO
between子句中使用的值應為標量值。 當您的子查詢返回多行時,查詢失敗。 嘗試優化子查詢以返回一個結果。 首先,如果您的字段位於其中,則首先確定table2中range_from和range_to的值。 嘗試使用range_from和max of range_to的min,或者根據您的要求應用子查詢中的caluse。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.