【问题标题】:Using an Case function in a MySQL SELECT query then select在 MySQL SELECT 查询中使用 Case 函数,然后选择
【发布时间】:2017-05-09 22:52:14
【问题描述】:

我正在尝试在 MySQL 选择查询中使用 Case 语句。 我收到一个错误(子查询返回超过 1 行)

    SELECT mony.come,mony.go,mony.details,mony.id_bill,
    (
     case mony.details
        when 'collect' then (SELECT collect_from_customer.num FROM collect_from_customer INNER JOIN mony ON mony.id_bill = collect_from_customer.id WHERE collect_from_customer.id=mony.id_bill )
        when 'pay_to_cust' then (SELECT pay_to_customer.num FROM pay_to_customer INNER JOIN mony ON mony.id_bill = pay_to_customer.id WHERE pay_to_customer.id=mony.id_bill )
    end
) as idd 
,mony.date FROM mony

请帮帮我

【问题讨论】:

  • 我没有看到任何if...您正在使用case 语句,而您遇到的错误是因为您的子查询返回的不止一行...您可以测试将limit 1 添加到您的每个子查询中。
  • 你是对的...对不起,选择(mony.id_bill)时,需要使用这个值来选择另一个 span>
  • 如果您可以编辑您的问题并包含此详细信息,这将使其他人更容易回答:@)
  • 感谢 -Martin 的关注

标签: mysql select


【解决方案1】:

感谢我找到了解决办法

SELECT m.come,m.go,m.details,m.id_bill,
(
case m.details
        when 'collect' then (SELECT collect_from_customer.num FROM collect_from_customer INNER JOIN mony m1 ON m1.id_bill = collect_from_customer.id WHERE collect_from_customer.id=m.id_bill LIMIT 1 )
        when 'pay_to_cust' then (SELECT pay_to_customer.num FROM pay_to_customer INNER JOIN mony m1 ON m1.id_bill = pay_to_customer.id WHERE pay_to_customer.id=m.id_bill LIMIT 1 )
end
) as idd 
,m.date FROM mony m

【讨论】:

  • 这看起来不能解决任何问题:-(
猜你喜欢
  • 2019-03-19
  • 2011-08-05
  • 1970-01-01
  • 2021-03-08
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
相关资源
最近更新 更多