15
votes

When making a join (inner, left outer, right outer or whatever), how can I specify which columns on the table to join into the original table?

Consider the following example:

SELECT FirstName FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID

This would select FirstName from user, but select everything from Provider. How can I specify which parts of Provider should be included in the resultset?

4

4 Answers

16
votes

This will only include User.FirstName and Provider.ProviderID in the final resultset:

SELECT User.FirstName, Provider.ProviderID FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID
6
votes
  SELECT User.FirstName, Provider.ID, Provider.YourExtraColumnname, Provider.YourExtraColumnname2 FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID
4
votes
         SELECT `User`.FirstName, Provider.* 
           FROM `User`
LEFT OUTER JOIN Provider 
             ON `User`.ProviderID = Provider.ID

1. You use the table name before the column, or if you alias your tables, you can use the alias.

E.g. LEFT OUTER JOIN Provider p and then you could access providers id on the select clause like this:

 SELECT `User`.FirstName, p.ID

2. I added backticks around the table name User, because it is a reserved word for MySQL

2
votes

You can specify the specific items to choose, like:

SELECT User.FirstName, Provider.ID, Provider.Name FROM User LEFT OUTER JOIN Provider ON User.ProviderID = Provider.ID