简体   繁体   English

如何创建变量并将其传递给另一个查询?

[英]How can I create and pass a variable to another query?

UPDATE uye SET bakiye=bakiye+100 WHERE ID IN 
(SELECT uye FROM kupon WHERE ID IN 
( select c.kupon from kuponbahis c 
join bahis b on b.sonuc = c.secim and b.ID = c.bahis 
group by c.kupon 

having sum(c.bahis = 24) > 0 and count(*) = (SELECT COUNT(*) FROM kuponbahis WHERE kupon = c.kupon)))

This query works but instead of "100" i want to change it with inside variables like; 此查询有效,但我想用内部变量(例如“ 100”)来更改它;

UPDATE uye SET bakiye=bakiye+VARIABLE WHERE ID IN 
(SELECT uye, VARIABLE FROM kupon WHERE ID IN 
( select c.kupon from kuponbahis c 
join bahis b on b.sonuc = c.secim and b.ID = c.bahis 
group by c.kupon 

I can do it with a PHP code, but i want to put all the process to SQL directly. 我可以用PHP代码完成此操作,但是我想将所有过程直接放在SQL中。

(Note: Yes, my desired variable is inside of kupon table) (注意:是的,我想要的变量在kupon表中)

I suspect you don't want a variable . 我怀疑你不需要变量 You want a column from the subquery. 您需要子查询中的列。 In that case, use a JOIN : 在这种情况下,请使用JOIN

UPDATE uye JOIN
       (SELECT k.*
        FROM kupon k
        WHERE k.ID IN (select c.kupon
                       from kuponbahis c join
                            bahis b
                            on b.sonuc = c.secim and b.ID = c.bahis 
                       group by c.kupon 
                       having sum(c.bahis = 24) > 0 and
                              count(*) = (SELECT COUNT(*) FROM kuponbahis WHERE kupon = c.kupon)
                   )
     ) k
     ON k.eye = uye.id
    SET bakiye=bakiye + k.VARIABLE; 

if you're trying to use stored procedure, you can declare and use variables: 如果您尝试使用存储过程,则可以声明和使用变量:

CREATE PROCEDURE setBakiye 
(
   bakiyeEkle INT
) 
BEGIN 
    UPDATE uye SET bakiye=bakiye+bakiyeEkle WHERE ID IN 
    (SELECT uye FROM kupon WHERE ID IN 
    ( select c.kupon from kuponbahis c 
    join bahis b on b.sonuc = c.secim and b.ID = c.bahis 
    group by c.kupon 

    having sum(c.bahis = 24) > 0 and count(*) = (SELECT COUNT(*) FROM     kuponbahis WHERE kupon = c.kupon)))
END; 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM