2016-11-02 13 views
0

次のクエリと想定します。私がチェックアウトしたよう、それは仕方を以下にITEM_COUNTを再利用することは不可能です他の列の定義でカラム名「変数」を使用して

select id, (select count(*) from items) as item_count, 
items_stored - (select count(*) from items) from something 

を:

select id, (select count(*) from items) as item_count, items_stored - item_count from something 

MySQLが印刷されるように定義されていない列エラーです。

しかし、私の質問は - 以下に定義されたselectステートメントを使用していますか?それは2回実行されるので、クエリが遅くなりますか?または、フードの下にキャッシュされている(結果は同じです)。

(select count(*) from items) 

ダブル使用例:

select id, (select count(*) from items) as item_count, 
items_stored - (select count(*) from items) from something 

答えて

0

次のようなクエリを書き直すことができ:

select 
    tbl.id, 
    tbl.item_count, 
    tbl.items_stored - tbl.item_count 
from 
(
    SELECT 
     something.id, 
     something.items_stored, 
     (select count(*) from items) as item_count 
    FROM 
     something 
) as tbl 

ザ・あなたが何かの行あたりのものに先端のための

+0

おかげでそれを数えます!上記のように同じクエリを2回使用すると、私はまだ興味がありますが、これがフードの下にキャッシュされるかどうかは不明です。 – Josh

関連する問題