道歉,如果已经被问到但不太确定要搜索什么。如果搜索标准匹配其中一个值,我想选择muliple LocaleIds。
目前我正在进行这样的简单搜索:
SELECT *
FROM [dbo].[Localizations]
WHERE Value like 'task switching' OR ResourceId like 'task switching'
ORDER BY LocaleId, ResourceId
这导致:
Id ResourceId Value LocaleId
53591 AssessmentType_Description_21 Task Switching
53247 Attribute_Description_1 Task Switching
53378 Attribute_Description_132 Task Switching
但是,缺少Other LocaleIds的相关行(英语LocaleId为空')。例如,我要求:
Id ResourceId Value LocaleId
53591 AssessmentType_Description_21 Task Switching
53247 Attribute_Description_1 Task Switching
53378 Attribute_Description_132 Task Switching
42257 AssessmentType_Description_21 Aufgabenwechsel de
42839 Attribute_Description_1 Aufgabenwechsel de
42876 Attribute_Description_132 Aufgabenwechsel de
45864 AssessmentType_Description_21 Changement de tâches fr
46446 Attribute_Description_1 Changement de tâches fr
46483 Attribute_Description_132 Changement de tâches fr
如何获取所有LocaleIds的完整结果集?任何帮助表示赞赏。
编辑: 抱歉,我希望所有与“任务切换”匹配的记录及其他语言的相应值。只会用1种语言搜索。
答案 0 :(得分:2)
我希望这个SQL能解决你的问题:
SELECT * FROM [dbo].[Localizations]
WHERE ResourceId in (SELECT ResourceId
FROM [dbo].[Localizations]
WHERE Value like 'task switching')
ORDER BY LocaleId, ResourceId
答案 1 :(得分:1)
我会在这里推荐EXISTS,而不是IN:
SELECT *
FROM dbo.Localizations loc
WHERE EXISTS
(SELECT 1
FROM dbo.Localizations loc2
WHERE value LIKE 'task switching'
AND loc.resourceID = loc2.resourceid)
ORDER BY localeid, resourceid
这种方式应该运行得更快。
答案 2 :(得分:0)
使用AND
组合多个运算符。
SELECT *
FROM [dbo].[Localizations]
WHERE Value like 'task switching'
AND Value like 'aufgabenwechsel'
AND Value like 'changement de tâches'
ORDER BY LocaleId, ResourceId
请记住,SQL语句中有时不接受像“â”这样的特殊字符,因此建议您查看Database normalization。