1

以下はMySQLクエリです。

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
);

同等のSQLサーバークエリに変換したいのですが、達成できませんでした。手伝ってくれませんか?

ありがとう

4

1 に答える 1

3

失敗した唯一の理由はCONCATmysql 関数のためですTSQL+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
)

または、結合で DELETE を実行することもできます。

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
于 2012-12-14T06:04:35.817 に答える