mysql中的内部连接?

mysql中的内部连接?,mysql,Mysql,我想对用户名进行内部联接,其中table1包含如下数据: username pass apple 11 orange 22 banana 33 表2的数据如下 username email tw-apple apple@gmail.com fb-orange orange@gmail.com reg-banana banana@gmail.com 获取通行证和电子邮件 SELECT * FROM table1

我想对用户名进行内部联接,其中table1包含如下数据:

username    pass
apple       11
orange      22
banana      33
表2的数据如下

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))
需要帮助。

请尝试以下操作:

  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
请参阅中的结果

阅读更多关于和的信息。

尝试以下方法:

  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
请参阅中的结果

阅读更多关于和的信息。

尝试以下方法:

  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
请参阅中的结果

阅读更多关于和的信息。

尝试以下方法:

  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
请参阅中的结果


阅读更多关于和的信息。

如果您使用的是MySQL,您可以直接使用,而不是笨拙的模拟:

  SELECT *,table2.username as uname
    FROM table1 
         INNER JOIN table2 
             ON table1.username = SUBSTRING_INDEX(table2.username,'-', -1);

(从@RagingBull偷走了sqlfiddle模板)

如果您使用的是MySQL,您可以直接使用,而不是笨拙的模拟:

  SELECT *,table2.username as uname
    FROM table1 
         INNER JOIN table2 
             ON table1.username = SUBSTRING_INDEX(table2.username,'-', -1);

(从@RagingBull偷走了sqlfiddle模板)

如果您使用的是MySQL,您可以直接使用,而不是笨拙的模拟:

  SELECT *,table2.username as uname
    FROM table1 
         INNER JOIN table2 
             ON table1.username = SUBSTRING_INDEX(table2.username,'-', -1);

(从@RagingBull偷走了sqlfiddle模板)

如果您使用的是MySQL,您可以直接使用,而不是笨拙的模拟:

  SELECT *,table2.username as uname
    FROM table1 
         INNER JOIN table2 
             ON table1.username = SUBSTRING_INDEX(table2.username,'-', -1);


(从@RagingBull偷走了SQLFIDLE模板)

尝试将table2别名移动到其列引用:
ON(子字符串(table2.username,(LOCATE(“”,table2.username)+1))=table1.username
首先是您想要的,如果理解正确,您希望在两个表中都显示用户名…我想在两个表上都进行内部联接,在username上省略表2tanks@AgRizzo的username上的“-”之前的值。我想到了
table2。username
实际上应该分为两列,以保持引用完整性(这将解决此问题)。尝试将table2别名移动到其列引用:
ON(子字符串(table2.username,(LOCATE(“”,table2.username)+1)))=表1.用户名
首先,如果理解正确,您希望在两个表中显示用户名…我想在两个表上都进行内部联接,在username上省略表2tanks@AgRizzo的username上“-”之前的值。我想到了
表2.用户名
应该按顺序分为两列若要保留引用完整性(这将消除此问题)。请尝试将table2别名移动到其列引用:
ON(子字符串(table2.username,(LOCATE(“”,table2.username)+1)))=表1.用户名
首先,如果理解正确,您希望在两个表中显示用户名…我想在两个表上都进行内部联接,在username上省略表2tanks@AgRizzo的username上“-”之前的值。我想到了
表2.用户名
应该按顺序分为两列若要保留引用完整性(这将消除此问题)。请尝试将table2别名移动到其列引用:
ON(子字符串(table2.username,(LOCATE(“”,table2.username)+1)))=表1.用户名
首先,如果理解正确,您希望在两个表中显示用户名…我想在两个表上都进行内部联接,在username上省略表2tanks@AgRizzo的username上“-”之前的值。我想到了
表2.用户名
应该按顺序分为两列保持引用完整性(这将消除此问题)。