如标题所述,是否可以在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有效地实现同样的效果。

最佳答案

按照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] ... ]


只有重复的密钥更新。插入期间没有用于创建表的功能。

如果确实需要此功能,则需要将其分为3个查询。
第一:
    SELECT * FROM table WHERE column2 ='column2 value';

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

对于上述实现,您可以使用pdo prepare / query。

注意:动态创建表不是一个好主意。如果这样做,最终您可能不知道那里有多少张桌子。您需要找到一些更好的算法。

关于php - 插入并创建表(如果不存在)…重复键更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43884718/

10-13 04:49