簡體   English   中英

MySQL查詢是否存在檢查where子句

[英]Mysql query with if exists check in where clause

我有兩個表(A和B),其中我的查詢將表A的計算結果與表B中的范圍進行比較,然后根據日期將相應的值插入到第三個表(表C)中的范圍(也在表B中) 。 但是,有可能表A可能沒有每天的數據,而那幾天我想輸入第二低范圍的值。

TABLE B
id(PK)|date| v1 | v2


TABLE A
Aid|id(FK)|MinRange|MaxRange|Value


TABLE C
Cid|b.date|id(FK)|b.v1|b.v2|A.value

我正在尋找一種將IF EXISTS嵌入WHERE子句的方法,如下所示:

SELECT B.value 
from TableB B 
INNER JOIN TableA A ON A.id=B.id 
WHERE B.id=4 
and (IF DATA EXISTS) B.v1+B.v2 between A.min and A.max (ELSE Choose the second lowest A.min)`

上面的查詢是一個示例,用於解釋我要執行的操作,因此,它不是有效的查詢。 我不想將子查詢用於明顯的性能問題。

我將不勝感激。謝謝您:)

那這個呢

UPDATE

DECLARE myvar INT;
SELECT COUNT(*) INTO myvar FROM TableB WHERE Date=p_date;
SELECT myvar;

IF(myvar>0)
    SELECT B.Date,A.Value
    from TableB B 
    left JOIN TableA A ON A.id=B.id 
    WHERE B.id=4 
ELSE
    SELECT p_date AS Date,predefinedvalue AS Value
END IF;

您必須使用左聯接,因為內部聯接將僅檢索匹配的記錄。 另外,預定義值也必須存儲在B中,因為如果沒有匹配的記錄,您將無法從A查詢任何內容。

SELECT CASE WHEN myvar>0 THEN B.Date
       ELSE p_date
       END AS Date,
       CASE WHEN myvar>0 THEN A.Value
       ELSE predefinedvalue
       END AS Value
from TableB B 
left JOIN TableA A ON A.id=B.id 
WHERE B.id=4 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM