2011-09-29 126 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