这已被问到,但我不太满意现有的问题与我的案例。 我有两个表,第一表是credentials
与id
username
和email
如果结果不匹配,请从另一张表中选择
和email-alias
表user-id
(其对应于credentials.id
)和email
。 credentials
中的电子邮件通常是“[email protected]”,而在别名中则是“[email protected]”。
所有我现在已经是
SELECT `username` FROM `credentials` WHERE `email` LIKE ?
但是,如果我用“[email protected]”查询电子邮件并不总是匹配。我想要做的就是使用一个查询的用户名这将回落到email-alias
和使用“[email protected]”获得从那里的user-id
要在credentials
再次用于匹配username
的缺陷是您提供的邮箱可能是任何一个别名一个“用户N @ ..”或“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 | |
+-----------------+--------------+------+-----+---------------------+----------------+
说实话,这是令人困惑的。 – 2012-08-11 15:10:05
使用INNER JOIN? – 2012-08-11 15:14:48