gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:34:01 24 4
gpt4 key购买 nike

我有一个 mysql 问题

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

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

是否有任何 mysql 代码可以为我实现此目的?

所以..

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

谁能帮我解决一下吗?

我见过mysql中的CASE函数,但我根本不熟悉它。我有逻辑了。但我无法将其转换为代码:D

谢谢

下表图片:

field listing

答案:

$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

关于mysql - MYSQL 中的查询表。 mysql select语句中的IF语句,如果字段为空,则左连接以获取替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27063982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com