我有这个问题:
$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
。谁知道那是什么?
答案 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
。