这是更新的问题:
当前查询正在执行以下操作:
$sql1 = "TRUNCATE TABLE fubar"; $sql2 = "CREATE TEMPORARY TABLE IF NOT EXISTS fubar SELECT id, name FROM barfu";
第一次运行包含此方法的方法时,它会在truncate上生成错误消息,因为该表尚不存在.
是我唯一的选择CREATE TABLE
,运行TRUNCATE TABLE
,然后填写表格?(3个单独的查询)
原来的问题是:
我一直很难在MySql中找出以下内容是否可行,而无需编写块sql:
CREATE TABLE fubar IF NOT EXISTS ELSE TRUNCATE TABLE fubar
如果我在create table之前单独运行truncate,并且该表不存在,那么我会收到一条错误消息.我试图消除该错误消息,而不必添加任何更多的查询.
此代码将使用PHP执行.
shmuel613,最好更新原始问题而不是回复.最好是在一个地方包含完整的问题,而不是在讨论中展开.
本的答案是合理的,除了他似乎有一个'不'他不想要的地方.只有在不存在的情况下才删除表格是不对的.
你确实需要多个陈述.有条件地创建然后填充:
CREATE TEMPORARY TABLE如果不是fubar(id int,name varchar(80))
TRUNCATE TABLE fubar
INSERT INTO fubar SELECT*FROM barfu
或者只是删除并重新创建
DROP TABLE如果存在fubar
CREATE TEMPORARY TABLE fubar SELECT id,name FROM barfu
使用纯SQL,这些是您真正的两类解决方案.我更喜欢第二个.
(使用存储过程,您可以将其缩减为单个语句.类似于:TruncateAndPopulate(fubar)但是当您编写TruncateAndPopulate()的代码时,您将花费更多时间而不仅仅使用上面的SQL.)