我想在用户名上进行内部联接,其中table1的数据如下:
username pass
apple 11
orange 22
banana 33
table2有像
这样的数据username email
tw-apple apple@gmail.com
fb-orange orange@gmail.com
reg-banana banana@gmail.com
获取通行证和电子邮件。
SELECT *
FROM table1
INNER JOIN table2
ON table2.(SUBSTRING(`username`,(LOCATE('-',`username`)+1)))=table1.username
以及
table2.(SUBSTRING_INDEX(`username`, '-', -1))
需要帮助..
答案 0 :(得分:2)
试试这个:
SELECT *,table2.username as uname
FROM table1 INNER JOIN
table2 ON table1.username=(SUBSTRING(table2.username,(LOCATE('-', table2.username))+1))
结果:
USERNAME PASS EMAIL UNAME
apple 11 apple@gmail.com tw-apple
orange 22 orange@gmail.com fb-orange
banana 33 banana@gmail.com reg-banana
请参阅SQL Fiddle中的结果。
答案 1 :(得分:1)
如果你使用MySQL,你可以使用SUBSTRING_INDEX
,而不是笨拙的模拟:
SELECT *,table2.username as uname
FROM table1
INNER JOIN table2
ON table1.username = SUBSTRING_INDEX(table2.username,'-', -1);
SQL Fiddle(从@RagingBull偷走了sqlfiddle模板)