2011-09-29 165 views
2

我正在查找最低可能的資源使用情況而沒有給出結果。例如(這是不行的):沒有結果的MySQL最短查詢

SELECT 1 WHERE 0 

編輯: 的目標是使用在存在於特殊情況下,我想沒有匹配的子查詢。 (我知道這不是唯一可能的解決方案,但在我的環境中,我選擇使用這個解決方案)。

+0

爲什麼不將'WHERE EXISTS(no result subquery)'改爲'WHERE FALSE'? –

+0

@ypercube存在的子查詢是與其他存在子查詢(如WHERE EXISTS(無結果)或EXISTS(其他))結合使用的somthimes。它絕對需要重構,但現在,它是最安全的解決方案(導入錯誤的可能性最小)。 – vbence

回答

3
SELECT 1 FROM DUAL WHERE 0 

將做的工作;你以前甚至不需要使用USE語句。

+0

謝謝你做到了。雖然之前我因爲愚蠢的圖形用戶界面而拒絕了SELECT * FROM(SELECT 1)作爲WHERE 0',所以顯示出了非常令人誤解的結果...... – vbence

+0

'SELECT * FROM(SELECT 1)作爲WHERE 0'也是有效的解決方案。 –

1

SELECT 1;將工作,但它會給出結果集
您可以嘗試SELECT NULL from <any table>
A USE <database name>語句沒有給出結果並佔用最少的資源。

究竟是什麼?

+0

SELECT 1會返回結果。雖然它不是查詢,但您的USE數據庫答案可能是正確的。 –

+1

我也想知道「究竟是什麼?」 –

+0

USE的問題是它不能用作(子)查詢。 – vbence

3
select '1' from tableName where 0 
+0

這涉及到加載表,我想避免它,因爲資源使用率低。 – vbence

+0

@vbence - 這是爲了什麼?如果我們知道 –

+1

@vbence,這將會容易得多:這也是有效的解決方案。它不會加載表格。嘗試'EXPLAIN SELECT 1 FROM tableName WHERE 0'來查看原因。 –

0

也許你可以做

select 1 where 1=0 
+0

不,我不能使用WHERE如果沒有表加載。 – vbence