mysql中的操作数应包含1列错误

mysql中的操作数应包含1列错误,mysql,Mysql,这是我的mysql查询。有人知道错误是什么以及如何修复它吗 谢谢 SQL query: Documentation INSERT IGNORE INTO thread_user (thread_id,user_id,last_read_date) SELECT 24,1,NOW() UNION SELECT 24, b.a, NOW() FROM (SELECT (2,3,4) AS a) b MySQL said: Documentation #1241 - Operand should

这是我的mysql查询。有人知道错误是什么以及如何修复它吗

谢谢

SQL query: Documentation

INSERT IGNORE
INTO thread_user (thread_id,user_id,last_read_date)
SELECT 24,1,NOW()
UNION
SELECT 24, b.a, NOW()
FROM (SELECT (2,3,4) AS a) b

MySQL said: Documentation
#1241 - Operand should contain 1 column(s) 

我猜您希望在第二个子查询中有三行。表达式
(2,3,4)
导致错误

INSERT IGNORE INTO thread_user(thread_id,user_id,last_read_date)
    SELECT 24, 1, NOW()
    UNION ALL
    SELECT 24, b.a, NOW()
    FROM (SELECT 2 as a UNION ALL
          SELECT 3 UNION ALL
          SELECT 4 
         ) b;

这只是对你意图的猜测。请注意,外部的
UNION
可以是
UNION ALL
——您应该始终使用后者,除非您想承担删除重复项的开销。

什么是
(选择(2,3,4)作为a)
应该做什么?创建一个名为a的1列表,行是2,3,4。上面的查询是在用户输入上运行php代码的结果。这是可行的,但我可以通过将选择分离为
INSERT IGNORE into thread\u user(thread\u id,user\u id,last\u read\u date)SELECT 24,1,NOW()UNION SELECT 24,2,NOW()UNION SELECT 24,3,NOW()UNION SELECT 24,4,NOW()