简体   繁体   English

全局变量MySQL

[英]Global Variable MySQL

I have this Query: 我有这个查询:

SELECT 
    qa_invoices.invoice_clientname, 
    (
        SELECT IFNULL(MIN(qa_returns.discount_code),1) 
        FROM qa_returns 
        WHERE qa_returns.invoice_code = qa_invoices.invoice_code 
        AND qa_returns.discount_code <> 1
    ) AS discount_code,
    qa_users.user_name,
    (0.00) AS previous_balance,
    (0.00) AS difference_to_be_paid,
    (0.00) AS client_credit,
    SUM(SubQueryAlias.item_discount) AS invoice_discount,
    SUM(SubQueryAlias.item_subtotal) AS invoice_subtotal,
    SUM(SubQueryAlias.item_total) AS invoice_total,
    DATE_FORMAT(qa_invoices.invoice_date,'%M %e, %Y @ %h:%i %p') AS returnlog_date 
FROM (
        SELECT  qa_returns_items.item_code, 
                qa_returns_items.item_subtotal, 
                qa_returns_items.item_discount, 
                qa_returns_items.item_total 
        FROM qa_returns_items 
        WHERE returnlog_code = (
                                    SELECT MIN(qa_returns.returnlog_code) 
                                    FROM qa_returns 
                                    WHERE qa_returns.invoice_code = 1
                                )
    UNION
        SELECT  qa_returns_residues.item_code, 
                qa_returns_residues.item_subtotal, 
                qa_returns_residues.item_discount, 
                qa_returns_residues.item_total 
        FROM qa_returns_residues 
        WHERE returnlog_code = (
                                    SELECT MIN(qa_returns.returnlog_code) 
                                    FROM qa_returns 
                                    WHERE qa_returns.invoice_code = 1
                                )
        ORDER BY item_code ASC
) AS SubQueryAlias, qa_invoices
LEFT JOIN qa_users USING(user_code)
WHERE SubQueryAlias.item_code NOT IN (
                        SELECT a.item_code 
                        FROM qa_returns_items a 
                        JOIN qa_returns_residues b 
                            ON b.item_code = a.item_code 
                        WHERE a.returnlog_code = (
                                                    SELECT MIN(qa_returns.returnlog_code) 
                                                    FROM qa_returns 
                                                    WHERE qa_returns.invoice_code = 1
                                                 )
                            AND b.returnlog_code = (
                                                    SELECT MIN(qa_returns.returnlog_code) 
                                                    FROM qa_returns 
                                                    WHERE qa_returns.invoice_code = 1
                                                   )
                        )
AND qa_invoices.invoice_code = 1;

The query works fine, but if we look the value invoice_code is set 5 times. 该查询工作正常,但是如果我们将值invoice_code设置为5次。 I wonder if there is any way to declare a global variable to assign the same value to all 我想知道是否有任何方法可以声明全局变量以将相同的值分配给所有

Sure, you can use user defined variables . 当然,您可以使用用户定义的变量

For example: 例如:

SET @invoice_code=1;

SELECT MIN(qa_returns.returnlog_code) 
FROM qa_returns 
WHERE qa_returns.invoice_code = @invoice_code

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

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