0

我想IFNULL检查同一行,但不同的列。

这是我的 sql 示例。

选择
    a.CONTACT_SEQ,
    “测试”作为备忘录,
    现在()作为 REG_DATE,
    a.USER_ID,
    一个名字,
    a.CONTACT_NUM AS PHONE_NUM,
    (SELECT COUNT(*) FROM TB_CONTACT AS a, TB_CONTACT_GROUP AS b
        在哪里
            b.USER_ID = 'spark@naver.com'
        和
            b.GROUP_CONTACT_SEQ = 120
        和
            a.GROUP_CONTACT_SEQ = b.GROUP_CONTACT_SEQ
    ) 作为总数,
    IFNULL((SELECT * FROM tb_auto_ban WHERE user_id =
'spark0017@naver.com' AND phone_num = a.CONTACT_NUM) , 'Y','N') 定义

从
        TB_CONTACT AS a, TB_CONTACT_GROUP AS b
            在哪里
                b.USER_ID = 'spark@naver.com'
            和
                b.GROUP_CONTACT_SEQ = 120
            和
                a.GROUP_CONTACT_SEQ = b.GROUP_CONTACT_SEQ


当我使用IFNULL时,如何将同一行引用到另一列?

4

1 回答 1

1

在这种情况下,您需要使用 EXISTS:

SELECT 
    a.CONTACT_SEQ,
    'TEST' AS MEMO, 
    NOW() AS REG_DATE,
    a.USER_ID,
    a.NAME,
    a.CONTACT_NUM AS PHONE_NUM,
    (SELECT COUNT(*) FROM TB_CONTACT AS a,  TB_CONTACT_GROUP AS b
        WHERE
            b.USER_ID = 'spark@naver.com'
        AND
            b.GROUP_CONTACT_SEQ = 120
        AND
            a.GROUP_CONTACT_SEQ = b.GROUP_CONTACT_SEQ
    ) AS TOTCOUNT,
    CASE WHEN EXISTS(SELECT 1 FROM tb_auto_ban WHERE user_id = 
'spark@naver.com' AND phone_num = a.CONTACT_NUM) THEN 'Y' ELSE 'N' END AS define
FROM
        TB_CONTACT AS a, TB_CONTACT_GROUP AS b
            WHERE
                b.USER_ID = 'spark@naver.com'
            AND
                b.GROUP_CONTACT_SEQ = 120
            AND
                a.GROUP_CONTACT_SEQ = b.GROUP_CONTACT_SEQ
于 2014-07-28T05:24:59.253 回答