mysqlcommand-linehistory

Why the \G in SELECT * FROM table_name\G?


Terminating a MySQL query with \G instead of ; will cause MySQL to return the result set in vertical format, which is sometimes easier to read if the number of returned columns is large.

Example:

mysql> SELECT * FROM help_keyword LIMIT 3\G
*************************** 1. row ***************************
help_keyword_id: 0
           name: JOIN
*************************** 2. row ***************************
help_keyword_id: 1
           name: REPEAT
*************************** 3. row ***************************
help_keyword_id: 2
           name: SERIALIZABLE
3 rows in set (0.00 sec)

My question asked out of pure curiosity: Is there any rationale behind choosing the character combination \G?


Solution

  • My thoughts:

    1. It probably means "go".
    2. Postgresql also uses \g as a statement terminator. Postgresql is older than MySQL so it might have influenced them.

    But as I pointed out in my comment to Andriyev's post above, it's actually making the \G uppercase that causes the display to be laid out vertically. Lowercase \g doesn't have that effect, or if it does then the documentation doesn't mention it. (I don't have a MySQL install handy to try it out.)