基于mysql查询的基数违规

Dom*_*oSL 6 mysql sql

我在这个查询中收到错误:

SELECT i.name, i.surname, (SELECT u.username FROM user u WHERE u.info_id IN (1,9,10,15,25,40,42,43,44)) as email FROM `userinfo` i WHERE i.id IN (1,9,10,15,25,40,42,43,44)
Run Code Online (Sandbox Code Playgroud)

错误:

基数违规:1242子查询返回超过1行

我知道这可以通过使用JOIN语句来解决,但我不知道如何解决这个问题.

为了澄清我的更多问题,我有两个表,user和userinfo:

用户

id info_id username
Run Code Online (Sandbox Code Playgroud)

用户信息

id name surname 
Run Code Online (Sandbox Code Playgroud)

info_id行user与id有关userinfo,所以有这个格式的用户信息ID列表(1,4,7,8,9)我想要名字和姓氏(来自userinfo)和来自的user那个用户名与info_id匹配

Joh*_*Woo 10

您需要在相关子查询中指定两个表之间的关系,

SELECT  i.name, 
        i.surname, 
        (
            SELECT  u.username 
            FROM    user u 
            WHERE   u.info_id = i.id) as email 
FROM    userinfo i 
WHERE   i.id IN (1,9,10,15,25,40,42,43,44)
Run Code Online (Sandbox Code Playgroud)

并通过使用JOIN(我更喜欢)

SELECT  i.name, 
        i.surname, 
        u.username as Email
FROM    userinfo i 
        INNER JOIN user u 
            ON u.info_id = i.id
WHERE   i.id IN (1,9,10,15,25,40,42,43,44)
Run Code Online (Sandbox Code Playgroud)

要进一步了解联接,请访问以下链接: