如果不存在则插入并创建表...在重复键更新上

时间:2017-05-10 06:07:21

标签: php mysql sql database pdo

如标题所述,是否可以使用create table查询添加insert查询。

我的插入查询类似于:

INSERT INTO table (column1, column2) VALUES (:column1, :column2) ON DUPLICATE KEY UPDATE column2 = values(column2)

我希望它像

INSERT INTO table (column1, column2) VALUES (:column1, :column2) AND CREATE TABLE IF NOT EXISTS $tablename (...) ON DUPLICATE KEY UPDATE column2 = values(column2)

,其中

$tablename = "table_".$column1;

编辑:

此外,如果不可能,现在我可以用pdo和php有效地实现相同目的。

1 个答案:

答案 0 :(得分:0)

根据MySql documentaion

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name,...)]
[(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
  col_name=expr
    [, col_name=expr] ... ]

只有重复密钥更新。插入期间没有create table的功能。

如果您真的需要这个,则需要将其拆分为3个查询。 第一:     SELECT * FROM table WHERE column2 =' column2 value&#39 ;;

如果通过选择查询未找到结果,则插入reord。 否则创建表。

如上所述,您可以使用pdo prepare / query。

注意:动态创建表不是一个好主意。如果你这样做,在一天结束时,你可能不知道有多少桌子。你需要找到一些更好的算法。