我有个问题:
select a.*, b.*, (select c.* from tableC c where c.id_tableA = a.id) from tableA a inner join tableB b on a.id = b.id_tableA where b.id_user = 50;
子查询(即tablec)按预期返回了不止一行。如何从tablec中只返回一行,以便与查询的其余部分匹配?
到目前为止,我已经尝试过:
(select c.* from tableC c where c.id_tableA = a.id limit 1)
它没有像mysql说的那样工作:
“操作数应包含1列”
2条答案
按热度按时间mcdcgff01#
如果表c中的列id是主键,那么它应该没有问题,但是如果不是,请尝试添加另一个条件来过滤子查询结果,例如,
例如,以下是开始日期:
of1yzvn42#
你在混合两种东西。中的标量子查询
SELECT
列表应该只返回一个值(行和列)。使用LIMIT 1
将得到一行,但仍有许多列。因此可以指定列名:或者用普通的
JOIN
: