我想转换这张表:
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
..
有没有办法在不进行任何连接的情况下这样做?
谢谢!
答案 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;