【问题标题】:convert mysql query to equivalent sql server specific query()将 mysql 查询转换为等效的 sql server 特定查询()
【发布时间】:2012-12-14 06:01:27
【问题描述】:

下面是 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 server 查询,但未能实现。你能帮帮我吗?

谢谢

【问题讨论】:

  • 嗨,你能告诉你你在哪里挣扎吗?并尝试这样做?示例代码更改?

标签: mysql sql sql-server tsql


【解决方案1】:

它失败的唯一原因是因为CONCAT mysql 函数,所以对于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
)

或者,您也可以使用 Join 执行 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

【讨论】:

  • 非常感谢,我会测试并回复您。感谢您帮助我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 2020-07-20
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 2015-11-29
  • 2016-07-29
相关资源
最近更新 更多