MYSQL查询表。mysql select语句中的IF语句,如果字段为空,则左键联接以获取替换值
我有一个mysql问题 如果用户已登录,我将使用用户id填充我的表。如果他们没有登录,我会在表格中填写他们的姓名、电子邮件和联系电话。因此,在这种情况下,如果用户登录/注销,则可以提交查询 我通过检查用户id是否在表中来检查查询用户在提交查询时是否已登录。因此,我可以从l_users表中获取他们的姓名、电子邮件和联系人 有没有mysql代码可以帮我实现这一点 所以 如果user_id为空,则从当前表中获取姓名、电子邮件和联系人。 否则,使用用户id从l_用户表中获取姓名、电子邮件和联系电话 有人能帮我解决吗 我在mysql中见过CASE函数,但对它一点也不熟悉。我有逻辑。但是我不能把它转换成代码:D 谢谢 下表图像: 答复: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_用户表中获取姓名、电子邮件和联系电话 有人
$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。名声++