繁体   English   中英

mysql从两个表查询两行

[英]mysql query two row from two tables

我有此查询以调用信息形成两个表。

DB::get("SELECT friends. * , (SELECT `login` FROM `users` WHERE `users`.`id` = friends.`user_id`) AS `login` FROM `friends` WHERE `id_user`='" . $this->user['id'] . "' ORDER BY `id` DESC LIMIT ")

因此,如果用户在朋友列表上,显示用户名,我想获取用户名和头像。 阿凡达行avatar 我尝试这个。

DB::get("SELECT friends. * , (SELECT `login`, `*avatar*` FROM `users` WHERE `users`.`id` = friends.`user_id`) AS `login` FROM `friends` WHERE `id_user`='" . $this->user['id'] . "' ORDER BY `id` DESC LIMIT ")

给我错误

SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)

错误在哪里?

您需要使用JOIN ,例如:

SELECT f.*, u.*
FROM friends f JOIN users u ON f.user_id = u.id
WHERE f.id_user = <your_id>
ORDER BY id DESC LIMIT <your_limit>;

首先,您应该使用Prepared Statement ,其次,您不能编写内联视图,该视图有两列

SELECT friends. * , (SELECT `login`, `*avatar*` FROM ..

相反,您应该使用JOIN ,它可能比当前方法更有效并且更具可读性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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