2016-06-15 1 views
0

私はこのクエリを持っている:エイリアスとして使用する既定のテーブルはありますか?

$db 
->prepare("INSERT INTO 
      events (post_id, table_code, other_id, user_id, author_id, date_time) 
      select ?, 15, ?, ?, ?, UNIX_TIMESTAMP() 
       UNION ALL 
      select ?, 15, ?, ?, ?, UNIX_TIMESTAMP() 
       from (select 1) as a 
       where 1=? 
")->execute(array($answer_id, $answer_id, $author_ques_id, $author_ques_id, 
        $answer_id, $answer_id, $author_ques_id, $author_ans_id, 
        ($yourCondition?1:0))); 

このラインに焦点を当ててください:

from (select 1) as a 

私のクエリは、同様にして、すべて正常に動作します。

私はちょうど私が、デフォルト・テーブル名doubleのようなもの)私はこのケースで(select 1) as aの代わりにそれを使用することができますがあるどこかで読ん覚えています。誰がそれが何であるか知っていますか?

答えて

2

あなたはdualを考えています。これはOracleから借りたものです。だから、代わりに:

select ?, 15, ?, ?, ?, UNIX_TIMESTAMP() 
from (select 1) as a 

あなたが書くことができます。

select ?, 15, ?, ?, ?, UNIX_TIMESTAMP() 
from dual 

これはhereを文書化されています

DUALはすべて SELECTステートメントが持つべき必要が人々の便宜のために、純粋ですFROMとおそらく他の節。 MySQL は、この節を無視することがあります。テーブル が参照されていない場合、MySQLはFROM DUALを必要としません。

私はこれが本当だとは確信していません。私はfromwheregroup by節で必要と思われると思います。

+0

ああ、正確に... thx +1 –

+0

最後の文について私ははいと言う必要があります。ここでは 'where'節*(質問にあるように)*がありますが、私のクエリには' group私は 'group by'を使う必要がありますか?どうして? –

+0

定数データの単一の行を選択しているときになぜ 'GROUP BY'を使うのか分かりません。しかし、WHERE句があれば必要なのは正しいと思います。 – Barmar

関連する問題