gpt4 book ai didi

mysql - 如果结果不匹配,请从另一个表中选择

转载 作者:行者123 更新时间:2023-11-29 06:04:56 24 4
gpt4 key购买 nike

有人问过这个问题,但我与我的案例不太相符。我有两个表,第一个表是 credentials ,其中包含 id usernameemail

和一个带有user-id(对应于credentials.id)和emailemail-alias表>。 凭据中的电子邮件通常是“user.name@domain.com”,而别名中的电子邮件则为“usern@domain.com”。

我现在所拥有的是

SELECT `username` FROM `credentials` WHERE `email` LIKE ?

但是如果我使用“usern@domain.com”查询,电子邮件并不总是匹配。我想要做的是通过一个查询获取用户名,该查询将回退到email-alias并使用“usern@domain.com”来获取user-id将在凭据中再次使用以匹配用户名

陷阱是提供的电子邮件可能是别名“usern@..”或“user.name@..”

mysql> describe `email-alias`;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user-id | int(11) | NO | UNI | NULL | |
| email | varchar(100) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+


mysql> describe `credentials`;
+-----------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(100) | NO | UNI | NULL | |
| email | varchar(100) | NO | | NULL | |
+-----------------+--------------+------+-----+---------------------+----------------+

最佳答案

您的问题有点令人困惑,但我认为您想要做的是从第一个表中选择用户名,如果电子邮件存在,如果不存在从第二个表中选择(如果存在)。为此,您可以使用子查询。希望这会有所帮助。

SELECT `c.username`
FROM credentials c
WHERE c.email = 'usern@domain.com' OR c.id =
(SELECT `e.user-id` from email-alias e WHERE e.email = "usern@domain.com")

关于mysql - 如果结果不匹配,请从另一个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11915780/

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