MySQL:在UPDATE中使用GROUP_CONCAT()时出错

时间:2015-03-19 11:43:25

标签: mysql

我正在尝试使用临时表进行UPDATE查询:

CREATE TEMPORARY TABLE bookings_temporary AS (

    SELECT
        bookings_clients_options_data.bookings_client_option_data_id AS id

    FROM
        bookings_clients_options

    INNER JOIN
        bookings_attendees
        ON (bookings_clients_options.client_id = '3')

    INNER JOIN bookings_clients_options_data ON (bookings_clients_options_data.bookings_client_option_id = '4')
        AND (bookings_clients_options.bookings_client_option_id = bookings_clients_options_data.bookings_client_option_id)
        AND (bookings_clients_options_data.booking_attendee_id = bookings_attendees.booking_attendee_id)
        AND (bookings_clients_options_data.value = 'Y')

    ORDER BY id

);

UPDATE bookings_clients_options_data
SET status_booking='sent'
WHERE bookings_client_option_data_id IN (

    SELECT GROUP_CONCAT(id) FROM bookings_temporary WHERE id > 0

);

DROP TABLE bookings_temporary

当用于填充临时表的SELECT查询返回有效数据时,当我运行整个查询时,出现错误:

#1260 - Row 147 was cut by GROUP_CONCAT()

我尝试使用LIMIT子句附加SELECT查询,该子句适用于前100个,但随后在下一个100处卡住,其中包含有问题的行147。

我不确定如何检查第147行,因为它包含在临时表中,并且其行号与原始表不对应。

可能整件事都错了,但由于我无法超越错误,我无法再就此发表意见。

此外,这似乎与group_concat_max_len无关,因为SELECT查询返回的行数仅为810,低于默认的1024。

非常感谢任何建议。

0 个答案:

没有答案