Mysql 子查询总是返回单个记录

Mysql 子查询总是返回单个记录,mysql,Mysql,我正在尝试将查询1合并为查询2在3中的子查询。但它将始终返回单个记录。 下面是我的疑问 1.SELECT REPLACE(LEFT(friend_id, LENGTH(friend_id)-2),'["','') AS friend_id FROM `friends_list` WHERE login_userid=90 Output : friend_id 32,44 2.SELECT id, CONCAT(firstname," ",lastname) AS username F

我正在尝试将查询1合并为查询2在3中的子查询。但它将始终返回单个记录。 下面是我的疑问

1.SELECT REPLACE(LEFT(friend_id, LENGTH(friend_id)-2),'["','') AS friend_id FROM `friends_list` WHERE login_userid=90 

Output :
friend_id   
32,44

2.SELECT id, CONCAT(firstname," ",lastname) AS username FROM register WHERE id IN(32,44)

Output :
id  username    
32  Suresh M
44  Senthil Kumar
示例代码,

3.SELECT t1.id, CONCAT(t1.firstname," ",t1.lastname) AS username 
FROM register AS t1 
INNER JOIN friends_list AS t2 ON t1.id=t2.login_userid
WHERE t1.id IN( SELECT REPLACE(LEFT(friend_id, LENGTH(friend_id)-2),'["','') AS friend_id FROM `friends_list` WHERE login_userid=90 )

Output :
id  username    
32  Suresh M
我想知道结果

请更正我的错误查询(第三个)。

你能试试这个吗:

SELECT R.id
    , CONCAT(R.firstname, " ", R.lastname) AS username
    FROM register R
    WHERE R.id IN (
        SELECT CAST(REPLACE(LEFT(F.friend_id, LENGTH(F.friend_id)-2) ,'["' ,'') AS UNSIGNED)
            FROM friend_list F
            WHERE F.login_userid = 90
    )

这应该对你有用@RamaLingam

在不使用内部联接的情况下尝试此操作

SELECT t1.id
    , CONCAT(t1.firstname, " ", t1.lastname) AS username
    FROM register t1
    WHERE t1.id IN (
        SELECT CAST(REPLACE(LEFT(t2.friend_id, LENGTH(t2.friend_id)-2),'["','') AS UNSIGNED)
            FROM friend_list t2
            WHERE t2.login_userid = 90
    )

只需删除内部连接条件

SELECT t1.id, CONCAT(t1.firstname," ",t1.lastname) AS username 
    FROM register AS t1 
    WHERE t1.id IN( SELECT REPLACE(LEFT(friend_id,      LENGTH(friend_id)-2),'["','') AS friend_id FROM `friends_list` WHERE login_userid=90 )

对不起,现在我正在编辑我的问题。相同的结果。它返回一条记录。现在我正在编辑我的问题。这种问题是糟糕的设计错误的症状:从friend_list F其中F.login_userid=90)使用near')的语法,现在它在添加-2)之后运行["“,”)。它还返回一行。请再试一次。我忘记了你问题中的一些代码。你能告诉我这些查询的结果吗:
SELECT*from friend\u list
SELECT*from register
它将返回单行32 Suresh Mwhy你需要在friend\u id列上使用REPLACE&LEFT函数??你的数据如何存储在friend\u id中列??friend_id:[“32,44”]它将再次返回单行32 Suresh MIt将返回单行32 Suresh Mok@RamaLingam..您能告诉我条件中的select查询返回了多少行吗…选择替换(左(friend_id,长度(friend_id)-2),“[”,“”)作为
friends\u list
WHERE login\u userid=90中的friends\u id,它只运行一行。输出:friends\u id 32,44因此它返回一条记录..?Mysql错误:语法使用near'作为未签名)Mysql错误:语法使用near'friends\u id)
SELECT id, CONCAT(firstname," ",lastname) AS username 
FROM register 
WHERE id IN( SELECT (select TRIM(BOTH '["' from (select TRIM(BOTH '"]' from friend_id)))) as friend_id  FROM `friends_list` WHERE login_userid=90 )     
SELECT t1.id, CONCAT(t1.firstname," ",t1.lastname) AS username 
    FROM register AS t1 
    WHERE t1.id IN( SELECT REPLACE(LEFT(friend_id,      LENGTH(friend_id)-2),'["','') AS friend_id FROM `friends_list` WHERE login_userid=90 )