Reputation: 529
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
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