如何在没有JOIN

时间:2016-10-21 21:46:05

标签: mysql sql join

我想转换这张表:

NAME    PROD    IS_PAID 
X       A       0   
X       B       1   
X       C       0   
..

对此,意味着如果用户为至少一种产品付款,那么我也希望将其标记为其他产品的付费用户:

NAME    PROD    IS_PAID 
X       A       1   
X       B       1   
X       C       1   
..

有没有办法在不进行任何连接的情况下这样做?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用exists执行此操作。

select name,prod,
case when exists (select 1 from t where name=t1.name and is_paid=1) then 1 else 0 end is_paid
from t t1

答案 1 :(得分:0)

在MySQL中,您可以使用变量:

  select t.*, 
         (@ip = if(@n = name, @ip,
                   if(@n := name, @ip := is_paid, @ip := is_paid)
                  )
         ) as new_is_paid
  from t cross join
       (select @n := '', @ip := 0) params
  order by name, is_paid desc;