mysql 如何在 CONCAT 中使用 WHERE

How to use WHERE in CONCAT in mysql

这是我在 mysql 中作为初学者的场景。

有2张桌子。

我需要根据 users_roles.rid 值在 wp_usermeta 中插入行。

textA + meta_value 来自 meta_key dokan_site_name 的行已经存在于 wp_usermeta + textB.

这是我的问题。我想不出正确实现 CONCAT 的正确方法。

当我 运行 我得到:#1242 - 子查询 returns 多于 1 行

INSERT INTO usermeta (
    user_id, 
    meta_key, 
    meta_value
    )
SELECT
    uid,
    'dokan_profile_settings',
    CONCAT('textA', (SELECT usermeta.meta_value FROM usermeta WHERE usermeta.meta_key LIKE 'dokan_store_name'), 'textB') 
AS meta_value
FROM users_roles WHERE rid LIKE '4'; 

如果我只是 运行 CONCAT 的 SELECT 部分,正如 Paul 评论中指出的那样:

SELECT usermeta.meta_value FROM usermeta 
WHERE usermeta.meta_key LIKE 'dokan_store_name'

我得到了预期的结果,但我无法弄清楚整个查询失败的原因。

如错误消息所述,您不能在 CONCAT() 函数中使用 returns 多个字符串值的子查询。 解决这个问题的一个简单方法是 GROUP_CONCAT() 子查询的结果:CONCAT('textA', (SELECT GROUP_CONCAT(usermeta.meta_value) FROM usermeta WHERE usermeta.meta_key LIKE 'dokan_store_name'), 'textB')