Home >> FAQs/Tutorials >> MySQL Tutorials >> Index

MySQL FAQs - SQL SELECT Statements with JOIN and Subqueries

By: FYIcenter.com

Part:   1  2   3  4  5 

(Continued from previous part...)

How To Define and Use Table Alias Names?

When column names need to be prefixed with table names, you can define table alias name and use them to prefix column names as shown in the following select statement:

mysql> SELECT l.id, l.url, r.comment FROM fyi_links l 
   INNER JOIN fyi_rates r ON l.id = r.id;
+-----+-------------------+-----------+
| id  | url               | comment   |
+-----+-------------------+-----------+
| 101 | dev.fyicenter.com | The best  |
| 102 | dba.fyicenter.com | Well done |
| 103 | sqa.fyicenter.com | Thumbs up |
+-----+-------------------+-----------+
3 rows in set (0.00 sec)

How To Write a Query with a Left Outer Join?

If you want to query from two tables with a left outer join, you can use the LEFT OUTER JOIN ... ON clause in the FROM clause. The following query returns output with a left outer join from two tables: fyi_links and fyi_rates. The join condition is that the id in the fyi_links table equals to the id in the fyi_rates table:

mysql> SELECT l.id, l.url, r.comment FROM fyi_links l 
   LEFT OUTER JOIN fyi_rates r ON l.id = r.id;
+-----+-------------------+-----------+
| id  | url               | comment   |
+-----+-------------------+-----------+
| 101 | dev.fyicenter.com | The best  |
| 102 | dba.fyicenter.com | Well done |
| 103 | sqa.fyicenter.com | Thumbs up |
| 104 | www.mysql.com     | NULL      |
| 105 | www.oracle.com    | NULL      |
| 106 | www.php.net       | NULL      |
| 107 | www.winrunner.com | NULL      |
+-----+-------------------+-----------+
7 rows in set (0.43 sec)

Note that a left outer join may return extra rows from the first (left) table that do not satisfy the join condition. In those extra rows, columns from the second (right) table will be given null values.

The extra rows returned from the left outer join in this example represents links that have no rates.

How To Write a Query with a Right Outer Join?

If you want to query from two tables with a right outer join, you can use the RIGHT OUTER JOIN ... ON clause in the FROM clause. The following query returns output with a right outer join from two tables: fyi_links and fyi_rates. The join condition is that the id in the fyi_links table equals to the id in the fyi_rates table:

mysql> SELECT l.id, l.url, r.comment FROM fyi_links l 
   RIGHT OUTER JOIN fyi_rates r ON l.id = r.id;
+------+-------------------+-----------+
| id   | url               | comment   |
+------+-------------------+-----------+
|  101 | dev.fyicenter.com | The best  |
|  102 | dba.fyicenter.com | Well done |
|  103 | sqa.fyicenter.com | Thumbs up |
| NULL | NULL              | Number 1  |
| NULL | NULL              | Not bad   |
| NULL | NULL              | Good job  |
| NULL | NULL              | Nice tool |
+------+-------------------+-----------+
7 rows in set (0.00 sec)

Note that a right outer join may return extra rows from the second (right) table that do not satisfy the join condition. In those extra rows, columns from the first (left) table will be given null values.

The extra rows returned from the right outer join in this example represents rates that have no links.

How To Write a Query with a Full Outer Join?

There is no way to do full outer join in MySQL. It does not support this feature at the current MySQL release.

(Continued on next part...)

Part:   1  2   3  4  5 


Selected Developer Jobs:

More...