如何在子查询返回多行的情况下执行子查询?

时间:2014-04-30 14:41:16

标签: mysql sql subquery

我正在尝试搜索一个表中的所有条目,其中的列与匹配-

之前的另一列中的条目相匹配

示例输出:

enter image description here

这是我试过的查询,它返回错误“查询中的错误(1242):子查询返回超过1行”

 SELECT * FROM table1 
    WHERE
      table1.Column1 = (
        SELECT
          SUBSTRING_INDEX(table2.Column1,'-',1) 
        FROM
          table2 
        WHERE
          table2.column1 LIKE '%\-%'
      );

2 个答案:

答案 0 :(得分:1)

您可以在IN子句中使用WHERE

SELECT * FROM table1 
WHERE
  table1.Column1 IN (
    SELECT
      SUBSTRING_INDEX(table2.Column1,'-',1) 
    FROM
      table2 
    WHERE
      table2.column1 LIKE '%\-%'
  );

答案 1 :(得分:1)

另一种方法是使用JOIN作为

SELECT * FROM table1 t1
inner join (
  SELECT
  SUBSTRING_INDEX(table2.Column1,'-',1) as str
  FROM
  table2 
  WHERE
  table2.column1 LIKE '%\-%'
)t2
on
t1.column1 = t2.str
;

<强> DEMO