MYSQL查询表。mysql select语句中的IF语句,如果字段为空,则左键联接以获取替换值

MYSQL查询表。mysql select语句中的IF语句,如果字段为空,则左键联接以获取替换值,mysql,if-statement,left-join,case,Mysql,If Statement,Left Join,Case,我有一个mysql问题 如果用户已登录,我将使用用户id填充我的表。如果他们没有登录,我会在表格中填写他们的姓名、电子邮件和联系电话。因此,在这种情况下,如果用户登录/注销,则可以提交查询 我通过检查用户id是否在表中来检查查询用户在提交查询时是否已登录。因此,我可以从l_users表中获取他们的姓名、电子邮件和联系人 有没有mysql代码可以帮我实现这一点 所以 如果user_id为空,则从当前表中获取姓名、电子邮件和联系人。 否则,使用用户id从l_用户表中获取姓名、电子邮件和联系电话 有人

我有一个mysql问题

如果用户已登录,我将使用用户id填充我的表。如果他们没有登录,我会在表格中填写他们的姓名、电子邮件和联系电话。因此,在这种情况下,如果用户登录/注销,则可以提交查询

我通过检查用户id是否在表中来检查查询用户在提交查询时是否已登录。因此,我可以从l_users表中获取他们的姓名、电子邮件和联系人

有没有mysql代码可以帮我实现这一点

所以

如果user_id为空,则从当前表中获取姓名、电子邮件和联系人。 否则,使用用户id从l_用户表中获取姓名、电子邮件和联系电话

有人能帮我解决吗

我在mysql中见过CASE函数,但对它一点也不熟悉。我有逻辑。但是我不能把它转换成代码:D

谢谢

下表图像:

答复:

$q =    "   SELECT  c.id,
                    c.user_id,  
                    IFNULL(u.fn, c.name) AS name, 
                    IFNULL(u.account_email, c.email) AS email, 
                    IFNULL(u.telephone, c.contact) AS contact, 
                    c.subject,
                    c.comment,
                    c.registered
                FROM l_contact_us c
                    LEFT JOIN l_users u 
                        ON c.user_id = u.id
            ORDER BY c.registered
        ";

使用
ISNULL
函数

SELECT ISNULL((SELECT name FROM a_table WHERE user_id = @usr),
       (SELECT name FROM i_user WHERE user_id = @usr)) AS name,
       ISNULL((SELECT [address] FROM a_table WHERE user_id = @usr),
       (SELECT [address] FROM i_user WHERE user_id = @usr)) AS a_address
FROM DUAL
或使用左外连接:

SELECT ISNULL(t1.name, t2.name) AS name,
       ISNULL(t1.address, t2.address) AS a_address
FROM a_table t1
       LEFT JOIN i_user t2 ON t1.user_id = t2.user_id
WHERE t1.user_id = @usr

还是我就这样离开了,加入了这张桌子?然后在我得到结果后检查用户id是否为空?是,左连接。ISNULL将不允许您选择多个字段嘿,感谢您的建议,我使用了第二个选项,涉及左连接,它工作良好,请参见原始问题中的答案。还必须将ISNULL更改为IFNULL。名声++