内部加入mysql?

时间:2014-03-17 09:01:34

标签: mysql

我想在用户名上进行内部联接,其中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))

需要帮助..

2 个答案:

答案 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中的结果。

详细了解LocateSubstring

答案 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模板)