是否有任何默认表我用它作为别名?

时间:2016-06-15 23:15:45

标签: mysql sql

我有这个问题:

$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。谁知道那是什么?

1 个答案:

答案 0 :(得分:2)

您正在考虑0。这是从Oracle借来的。所以而不是:

dual

你可以写:

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

记录在案here

  

DUAL纯粹是为了方便所有需要的人   SELECT语句应具有FROM和可能的其他子句。 MySQL的   可能会忽略这些条款。如果没有表,MySQL不需要FROM DUAL   被引用。

但是,我不确定这是否属实。我认为select ?, 15, ?, ?, ?, UNIX_TIMESTAMP() from dual from条款可能需要where