Ramesh
Ramesh

Reputation: 529

convert mysql query to equivalent sql server specific query()

following is the MySQL query,

DELETE FROM ATTRIBUTE_INSTANCE 
WHERE ATTRIBUTE_INSTANCE.ATTRIBUTE_NAME 
IN 
( SELECT CONCAT(ATTRIBUTE_TEMPLATE.TEMPLATE_ID,'.',ATTRIBUTE_TEMPLATE.ATTRIBUTE_NAME) 
  FROM ATTRIBUTE_TEMPLATE, TEMP_ENTITY_TABLE 
WHERE ATTRIBUTE_TEMPLATE.TEMPLATE_ID=TEMP_ENTITY_TABLE.ENTITY_ID
);

I want to transform it to equivalent sql server query, but i failed to achieve. Can you please help me?

thanks

Upvotes: 1

Views: 107

Answers (1)

John Woo
John Woo

Reputation: 263763

the only reason why it failed is because of the CONCAT mysql function, so for TSQL use + instead of CONCAT

DELETE FROM ATTRIBUTE_INSTANCE 
WHERE ATTRIBUTE_INSTANCE.ATTRIBUTE_NAME IN 
( 
  SELECT ATTRIBUTE_TEMPLATE.TEMPLATE_ID + '.' + ATTRIBUTE_TEMPLATE.ATTRIBUTE_NAME
  FROM   ATTRIBUTE_TEMPLATE, TEMP_ENTITY_TABLE 
  WHERE  ATTRIBUTE_TEMPLATE.TEMPLATE_ID=TEMP_ENTITY_TABLE.ENTITY_ID
)

alternately, you can also do DELETE with Join,

DELETE  a
FROM    ATTRIBUTE_INSTANCE  a
        INNER JOIN 
        ( 
            SELECT ATTRIBUTE_TEMPLATE.TEMPLATE_ID + '.' + 
                   ATTRIBUTE_TEMPLATE.ATTRIBUTE_NAME As ColumnName
            FROM   ATTRIBUTE_TEMPLATE 
                    INNER JOIN TEMP_ENTITY_TABLE 
                        ON ATTRIBUTE_TEMPLATE.TEMPLATE_ID = TEMP_ENTITY_TABLE.ENTITY_ID
        ) b ON a.ATTRIBUTE_NAME = b.ColumnName

Upvotes: 3

Related Questions