MySQL查询从另一个查询中存在ID的表中获取字段

时间:2017-10-05 15:35:55

标签: mysql sql

这一定是相当直接的,因为我倾向于使用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列

我完全错误地处理了这个问题吗?

2 个答案:

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