有人问过这个问题,但我的情况与现有问题不太相符。我有两张桌子,第一张桌子是credentials
和id
username
email
和一个email-alias
表 user-id
(对应于credentials.id
)和email
。电子邮件credentials
通常是“user.name@domain.com”,而别名则是“usern@domain.com”。
我现在只有
SELECT `username` FROM `credentials` WHERE `email` LIKE ?
但是,如果我使用“usern@domain.com”查询,电子邮件将不会总是匹配。我想要做的是通过一个查询获取用户名,该查询将回退email-alias
并使用“usern@domain.com”从那里获取一个user-id
再次credentials
用于匹配username
陷阱是提供的电子邮件可能是别名“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 | |
+-----------------+--------------+------+-----+---------------------+----------------+