这一定是相当直接的,因为我倾向于使用ORM,因此我不必经常弄脏手,因此我很挣扎!
我有一个数据库,想要从表中获取多个字段,这一点很容易..
SELECT main_table.registration_number, main_table.registered_name FROM main_table;
我想根据另一个表过滤结果,这也很容易..
SELECT second_table.registration_number FROM second_table WHERE this_field = '' AND that_field = '0';
现在问题是我想根据第二个查询结果集运行第一个查询,我想的是这样的:
SELECT main_table.registration_number, main_table.registered_name FROM main_table WHERE main_table.registration_number IN (SELECT * FROM second_table WHERE this_field = '' AND that_field = '0');
这给了我:错误代码:1241。操作数应包含1列
我完全错误地处理了这个问题吗?
答案 0 :(得分:2)
您的子查询应该执行以下操作,
子查询中的(从表中选择*)并不是您真正需要做的事情 因此子查询应返回一列
(SELECT registration_number FROM second_table WHERE this_field = '' AND that_field = '0');
您不能在子查询中返回多个列 这样做会导致这样的错误
答案 1 :(得分:1)
您必须选择一列
SELECT main_table.registration_number,main_table.registered_name FROM main_table WHERE main_table.registration_number IN(SELECT registration_number FROM second_table WHERE this_field =''AND that_field ='0');