To use a SQL variable, store the highest price in it, then use the variable to identify the record containing
the price
mysql>
mysql> CREATE TABLE author
-> (
-> a_id INT UNSIGNED NOT NULL AUTO_INCREMENT, # author ID
-> name VARCHAR(30) NOT NULL, # author name
-> PRIMARY KEY (a_id),
-> UNIQUE (name)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE book
-> (
-> a_id INT UNSIGNED NOT NULL, # author ID
-> p_id INT UNSIGNED NOT NULL AUTO_INCREMENT, # book ID
-> title VARCHAR(100) NOT NULL, # title of book
-> state VARCHAR(2) NOT NULL, # state where purchased
-> price INT UNSIGNED, # purchase price (dollars)
-> INDEX (a_id),
-> PRIMARY KEY (p_id)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> INSERT INTO author (name) VALUES
-> ('Tom'),
-> ('Monet'),
-> ('Jack'),
-> ('Picasso'),
-> ('Mary')
-> ;
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql>
mysql> INSERT INTO book (a_id,title,state,price)
-> SELECT a_id, 'Database', 'IN', 34 FROM author WHERE name = 'Tom';
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql>
mysql> INSERT INTO book (a_id,title,state,price)
-> SELECT a_id, 'SQL', 'MI', 87 FROM author WHERE name = 'Tom';
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql>
mysql> INSERT INTO book (a_id,title,state,price)
-> SELECT a_id, 'MySQL', 'KY', 48 FROM author WHERE name = 'Jack';
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> INSERT INTO book (a_id,title,state,price)
-> SELECT a_id, 'XML', 'KY', 67 FROM author WHERE name = 'Jack';
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> INSERT INTO book (a_id,title,state,price)
-> SELECT a_id, 'Java', 'IA', 33 FROM author WHERE name = 'Jack';
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql>
mysql> INSERT INTO book (a_id,title,state,price)
-> SELECT a_id, 'HTML', 'NE', 64 FROM author WHERE name = 'Mary';
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql>
mysql> SELECT @max_price := MAX(price) FROM book;
+--------------------------+
| @max_price := MAX(price) |
+--------------------------+
| 87 |
+--------------------------+
1 row in set (0.00 sec)
mysql> SELECT author.name, book.title, book.price
-> FROM author, book
-> WHERE book.price = @max_price
-> AND book.a_id = author.a_id;
+------+-------+-------+
| name | title | price |
+------+-------+-------+
| Tom | SQL | 87 |
+------+-------+-------+
1 row in set (0.00 sec)
mysql>
mysql>
mysql> drop table book;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table author;
Query OK, 0 rows affected (0.00 sec)
mysql>
Related examples in the same category