将mssql查询转换为mysql查询
我在网上找到了下面的mssql查询,它应该可以帮助我处理一个复杂的mysql查询,我已经为此苦苦挣扎了几天了将mssql查询转换为mysql查询,mysql,sql-server,Mysql,Sql Server,我在网上找到了下面的mssql查询,它应该可以帮助我处理一个复杂的mysql查询,我已经为此苦苦挣扎了几天了 SELECT inv.typeID AS typeID, inv.typeName AS typeName, invGroups.groupName AS groupName, inv.published AS published, inv.description AS description, rankVal.valueFloat AS
SELECT
inv.typeID AS typeID,
inv.typeName AS typeName,
invGroups.groupName AS groupName,
inv.published AS published,
inv.description AS description,
rankVal.valueFloat AS rank,
replace (( SELECT skills.attributeName AS [data()]
FROM dgmTypeAttributes tattr -- Link between skillbook and attributes
INNER JOIN dgmAttributeTypes skills ON (skills.attributeID = tattr.valueInt)
WHERE (tattr.typeID = inv.typeID)
AND (tattr.attributeID IN (180, 181)) -- Primary and secondary attributes
ORDER BY inv.typeID FOR xml path('')), ' ', ',') AS prisec,
replace (( SELECT RTRIM(CAST(inv2.typeID AS varchar)) + ',' AS [data()]
FROM (SELECT * FROM dgmTypeAttributes WHERE (attributeID in (182, 183, 184)) -- Pre-req skills 1, 2, and 3
AND (typeID = inv.typeID)) tattr2
INNER JOIN invTypes inv2 ON (tattr2.valueInt = inv2.typeID)
ORDER BY inv.typeID FOR xml path('')), ' ', ' ') AS prereq,
replace (( SELECT RTRIM(CAST(tattr2.valueInt AS varchar)) + ',' AS [data()]
FROM (SELECT * FROM dgmTypeAttributes WHERE (attributeID in (277, 278, 279)) AND (typeID = inv.typeID)) tattr2 -- Link between skillbook and attributes
ORDER BY inv.typeID FOR xml path('')), ' ', ' ') AS prereqlvl
FROM invTypes inv
INNER JOIN invGroups ON (inv.groupID = invGroups.groupID)
INNER JOIN dgmTypeAttributes rankVal ON (inv.typeID = rankVal.typeID)
WHERE invGroups.categoryID = 16 -- Skillbooks category
AND rankVal.attributeID = 275 -- Skill rank attribute
AND inv.published = 1
GROUP BY inv.typeID, inv.typeName, invGroups.groupName, inv.published, inv.description, rankVal.valueFloat
ORDER BY invGroups.groupName, inv.typeName
我对mysql很满意,但我对mssql一无所知。有人能推荐一种转换这个查询的好方法吗?这种方法成本很低,或者现在成本很高?我不希望有人为我转换它,因为这会要求太多,但一些建议,除了学习mssql lolz之外,还可以为我指明仪式的方向,这将是非常好的。感谢您的时间和耐心。建议:使用utf8 unicode字符集,以分隔文件csv的形式从MySQL数据库中提取数据。使用bcp将utf8与-Jutf8参数和字符模式-c一起指定导入SQL Server。请参阅站点。还有一个很好的例子。那些带有for-XML路径的子查询似乎用于连接字符串。看看是否可以在MySQL中用GROUP_CONCAT替换它们。其他部分似乎是标准的SQL。我想你已经把它倒过来了。我有一个mysql数据库中的数据,它最初存储在mssql数据库中,但对于实际使用数据的大量用户,我们将其导出到mysql。然而,有足够多的用户,您经常会发现查询对mssql中的数据处理很有帮助,而对于使用mysql的人来说,它们是毫无用处的。谢谢你。需要补充的东西。我无法访问mssql。我没有访问mssql数据转储的权限,即使我有访问mssql服务器的权限。它似乎也不喜欢[data]。这与创建别名相同吗?@Wes:方括号用于分隔SQL Server中的名称或别名的标识符,类似于MySQL中使用记号的方式。