操作数应该只包含1列Mysql Query

时间:2017-03-29 06:20:59

标签: mysql

我使用以下查询根据case语句中指定的条件获取多个列值,并遇到以下错误操作数应该只包含1列mysql查询。我只是无法弄清楚问题是什么。有一个简单的解决方法,或其他方式来编写我的查询?

SELECT id,
          CASE 
             WHEN id='' THEN (select * where name='abc')
             ELSE (select * from sample)
          END
    FROM sample WHERE name='abc' and status='xyz'

1 个答案:

答案 0 :(得分:1)

您可以使用结合了三种不同查询的联合查询:

select * from samples
where name='abc' and status='xyz'

union all

select * from samples
where
  name='abc' and not exists (
    select * from samples
    where name='abc' and status='xyz'
  )

union all

select * from samples
where
  not exists (
    select * from samples
    where name='abc'
  )
  • 第一部分将返回与名称和状态条件匹配的样本中的所有记录

  • 第二部分将返回样本中与名称条件匹配的所有记录,但仅在第一个查询未返回任何内容时

  • 只要第一个和第二个查询都没有返回任何内容,三分之一部分就会返回样本中的所有记录

(这三个查询可以与OR组合在一起,但联合查询更容易阅读和更清晰)