【问题标题】:MariaDB INSERT value as COLUMN_CREATE (dynamic column)MariaDB INSERT 值作为 COLUMN_CREATE(动态列)
【发布时间】:2014-10-22 08:11:53
【问题描述】:

我需要插入动态列作为从另一个表中选择。

我试过了:

INSERT INTO table (id, photos)
VALUES
(12345,COLUMN_CREATE(SELECT file FROM photo WHERE ad_id = 12345));

INSERT INTO table (id, photos)
VALUES
(12345,SELECT COLUMN_CREATE(file) FROM photo WHERE ad_id = 12345));

INSERT INTO table (id, photos)
SELECT ad_id, COLUMN_CREATE(file) FROM photo WHERE ad_id = 12345;

而且 MariaDB 总是返回 #1064 - 你的 SQL 语法有错误;

【问题讨论】:

    标签: mariadb dynamic-columns select-insert


    【解决方案1】:
    INSERT INTO `table` (id, photos)
    VALUES
    (12345,COLUMN_CREATE(1, (SELECT file FROM photo WHERE ad_id = 12345)));
    

    table 周围加上引号,因为它是保留字 (List of MariaDB's reserved words)。

    将动态列的编号或名称添加到 COLUMN_CREATE 函数的参数 (COLUMN_CREATE syntax),我的示例 SQL 使用 1 作为列编号。

    将 SELECT 语句放在括号中,因为子查询必须带括号。

    【讨论】:

    • 谢谢!但是现在 MariaDB 返回 #1242 - 子查询返回超过 1 行 我需要在动态列中插入更多值(行),我认为 MariaDB 会自动处理它。
    • @Ondřej:COLUMN_CREATE 和 COLUMN_ADD 都不能从超过 1 行的子查询中自动创建多个动态列。
    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2017-09-04
    相关资源
    最近更新 更多