0

我有这个查询:

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;

查询工作正常,但如果我们查看该值invoice_code设置了 5 次。我想知道是否有任何方法可以声明一个全局变量来为所有变量分配相同的值

4

1 回答 1

3

当然,您可以使用用户定义的变量

例如:

SET @invoice_code=1;

SELECT MIN(qa_returns.returnlog_code) 
FROM qa_returns 
WHERE qa_returns.invoice_code = @invoice_code
于 2012-06-25T19:44:21.363 回答