I am trying to select data from a derived table created in the FROM statement. I have the following code in MySQL:
x
SELECT TEMP.State, TEMP.Name
FROM (SELECT DISTINCT STATE.State, PRODUCT.Name, PRODUCT.Price
FROM STATE
JOIN PRODUCT) AS TEMP
I’m trying to do the same in Microsoft SQL Server, but this doesn’t work, with an error ‘incorrect syntax’. I’ve tried a few different combinations, and anything I can find says this should work. All help appreciated!
Advertisement
Answer
Your current MySQL subquery appears to be a cross join, as it is an inner join without any ON
clause. SQL Server does not support this syntax, and if you really want to use a cross join here, then use:
SELECT
TEMP.State,
TEMP.Name
FROM
(
SELECT DISTINCT STATE.State, PRODUCT.Name, PRODUCT.Price
FROM STATE
CROSS JOIN PRODUCT
) AS TEMP;
This being said, I see no reason for the subquery on either database, just use:
SELECT DISTINCT s.State, p.Name
FROM STATE s
CROSS JOIN PRODUCT p;