简体   繁体   中英

subquery returns more than 1 row?

subquery returns more than 1 row ? sulution ?

 SELECT `t_files`.*, `t_users`.`username`, (SELECT CONCAT(b.first_name, " ", b.last_name) FROM t_files AS a JOIN t_users as b ON b.id = a.user_id ) as upload_by FROM `t_files` LEFT JOIN `t_files_permission` ON `t_files_permission`.`id_files` = `t_files`.`file_id` LEFT JOIN `t_users` ON `t_users`.`id` = `t_files_permission`.`id_users` WHERE `t_files`.`company_id` = '1' AND `t_files_permission`.`id_users` = '59' AND `is_deleted` =0 

Add the condition in your sub query like below

SELECT t_files .*, t_users . username , (SELECT CONCAT(b.first_name, " ", b.last_name) FROM t_files AS a JOIN t_users AS b ON b.id = a.user_id

WHERE a.id_users` = '59'

) as upload_by FROM t_files LEFT JOIN t_files_permission ON t_files_permission . id_files = t_files . file_id LEFT JOIN t_users ON t_users . id = t_files_permission . id_users WHERE t_files . company_id = '1' AND t_files_permission . id_users = '59' AND is_deleted =0

try this way

SELECT `t_files`.*, `t_users`.`username`, 
(select CONCAT(b.first_name, " ", b.last_name)
    from t_files as a
     join t_users as b on b.id = a.user_id 
     where t.files.id=a.id) as upload_by 
FROM `t_files` as 
LEFT JOIN `t_files_permission` ON `t_files_permission`.`id_files` = `t_files`.`file_id` 
LEFT JOIN `t_users` ON `t_users`.`id` = `t_files_permission`.`id_users`
WHERE `t_files`.`company_id` = '1' AND `t_files_permission`.`id_users` = '59' AND `is_deleted` =0

I think you don't need sub query. You can use join to resolve stuff.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM