這已被問到,但我不太滿意現有的問題與我的案例。 我有兩個表,第一表是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