2017-10-05 75 views
0

这必须是相当直接的,因为我倾向于使用ORM,我不必经常弄脏我的手,因此挣扎!MySQL查询从另一个查询中存在ID的表中获取字段

我有一个数据库,想从表中得到几个字段,该位是容易..

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列(s)

我处理这完全错误?

回答

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' );

+0

谢谢!这是我需要做的 – Torrm

2

你的子查询应该做类似下面,

(选择表*)的子查询是不是你真正需要做的 这样子查询应返回一列

(SELECT registration_number FROM second_table WHERE this_field = '' AND that_field = '0'); 

您不能在多个列中返回多个列子查询像 那样,这样做会导致这样的错误

相关问题