Hint: Use parentheses and commas for each row [OK]
Common Mistakes:
Omitting parentheses around rows
Missing commas between values
Using assignment syntax inside VALUES
3. What is the output of this query?
SELECT * FROM (VALUES (1, 'Red'), (2, 'Blue')) AS colors(id, name);
medium
A. One row with array [(1, 'Red'), (2, 'Blue')]
B. Syntax error due to missing table
C. Empty result set
D. Two rows with columns id and name: (1, 'Red') and (2, 'Blue')
Solution
Step 1: Understand VALUES with alias
The VALUES clause creates two rows. The alias 'colors' names the columns as id and name.
Step 2: Result of SELECT * from VALUES
The query returns two rows: first row (1, 'Red'), second row (2, 'Blue'), with columns id and name.
Final Answer:
Two rows with columns id and name: (1, 'Red') and (2, 'Blue') -> Option D
Quick Check:
VALUES + alias = rows with named columns [OK]
Hint: VALUES with alias returns rows with named columns [OK]
Common Mistakes:
Expecting a syntax error without a real table
Thinking VALUES returns arrays
Assuming empty results without data
4. Identify the error in this query:
SELECT * FROM VALUES (1, 'A'), (2, 'B') AS t(id, name);
medium
A. Missing parentheses around the entire VALUES clause
B. Missing parentheses around VALUES rows
C. Alias must come before VALUES
D. No error, query is correct
Solution
Step 1: Check VALUES clause syntax
VALUES rows must be enclosed in parentheses as a table expression: (VALUES ...)
Step 2: Analyze the query
The query misses parentheses around the entire VALUES clause. It should be: FROM (VALUES ...) AS t(id, name)
Final Answer:
Missing parentheses around the entire VALUES clause -> Option A
Quick Check:
VALUES clause needs parentheses around all rows [OK]
Hint: Wrap all VALUES rows in parentheses when used in FROM [OK]
Common Mistakes:
Not wrapping VALUES in parentheses in FROM clause
Placing alias before VALUES
Assuming no parentheses needed for inline data
5. You want to create a temporary inline table of products with columns product_id, name, and price using VALUES. Which query correctly creates this and selects products priced over 10?
hard
A. SELECT * FROM (VALUES (product_id=1, name='Pen', price=5), (product_id=2, name='Notebook', price=15), (product_id=3, name='Eraser', price=8)) p(product_id, name, price) WHERE price > 10;
B. SELECT * FROM VALUES (1, 'Pen', 5), (2, 'Notebook', 15), (3, 'Eraser', 8) AS p(product_id, name, price) WHERE price > 10;
C. SELECT * FROM (VALUES (1, 'Pen', 5), (2, 'Notebook', 15), (3, 'Eraser', 8)) AS p(product_id, name, price) WHERE price > 10;
D. SELECT * FROM (VALUES (1, 'Pen', 5), (2, 'Notebook', 15), (3, 'Eraser', 8)) AS p WHERE price > 10;
Solution
Step 1: Check correct VALUES syntax with alias and columns
The VALUES clause must be enclosed in parentheses and aliased with column names, like SELECT * FROM (VALUES (1, 'Pen', 5), (2, 'Notebook', 15), (3, 'Eraser', 8)) AS p(product_id, name, price) WHERE price > 10.
Step 2: Validate options
A uses invalid assignment syntax (product_id=1 etc.) inside VALUES rows. B misses parentheses around the entire VALUES clause. C is correct. D misses column names in the alias, making 'price' undefined.
Final Answer:
SELECT * FROM (VALUES (1, 'Pen', 5), (2, 'Notebook', 15), (3, 'Eraser', 8)) AS p(product_id, name, price) WHERE price > 10; -> Option C
Quick Check:
VALUES + (parens) + AS alias(columns) + WHERE = correct [OK]
Hint: Wrap VALUES in parentheses, alias with columns, then filter [OK]
Common Mistakes:
Forgetting parentheses around VALUES
Not aliasing columns when filtering by column name
Using assignment syntax like product_id=1 in VALUES rows
Filtering on column without alias or column names
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.