Select 同一行中的不同字符串
Select different strings in the same row
我有一个名为 "character_certifications" 的 table,我需要 select 不同的字符串作为相同结果的计数。 table 看起来像这样:
classId charId 变量
0 268482320 EmergentAbility65-1
0 268482320 EmergentAbility65-2
0 268482320 EmergentAbility65-3
0 268482320 EmergentAbility70-1
0 268482320 EmergentAbility70-2
0 268482320 EmergentAbility70-3
0 268482320 ClassAbility75-1
0 268482320 ClassAbility75-2
0 268482320 ClassAbility75-3
0 268482320 ClassAbility80-1
0 268482320 ClassAbility80-2
0 268482320 ClassAbility80-3
我需要这样的输出:
for emergentAbilities 65 and 70 = result count 6
我尝试了这个 SQL 请求,但 returns 我 1 :
SELECT COUNT(distinct var) AS COUNT
from character_certifications
where classId=0 AND charId=268482320 AND var"EmergentAbility65-1"
我也试过这个,它返回给我 12:
SELECT COUNT(distinct var) AS COUNT
from character_certifications
where classId=0 AND charId=268482320
所有紧急能力65和70的总和怎么算?
并且在某些情况下,角色没有 "all" 他们可以拥有的紧急能力 65 和 70 例如:
如果可以,请调整您的架构以拆分该复合字符串,或者将两个关键组件分解为派生列,以便您可以快速对它们求和。然后就这么简单:
SELECT var, SUM(column_b)
FROM character_certifications
WHERE column_a IN ('EmergentAbility65', 'EmergentAbility70')
GROUP BY column_a
其中column_a
和column_b
代表var
的两个组成部分。如果这些列被索引,这个查询运行得非常快。
如果您做不到,您将不得不忍受非常昂贵的 table 扫描,使用 SUBSTRING_INDEX(var, '-', -1)
之类的东西来提取组件。这在大 tables 上往往非常慢。
你应该尝试这样的事情:
SELECT COUNT(distinct var) AS COUNT
from character_certifications
where classId=0 AND charId=268482320
AND (var LIKE "EmergentAbility65%" OR var LIKE "EmergentAbility70%")
试试看 here.
我有一个名为 "character_certifications" 的 table,我需要 select 不同的字符串作为相同结果的计数。 table 看起来像这样:
classId charId 变量
0 268482320 EmergentAbility65-1
0 268482320 EmergentAbility65-2
0 268482320 EmergentAbility65-3
0 268482320 EmergentAbility70-1
0 268482320 EmergentAbility70-2
0 268482320 EmergentAbility70-3
0 268482320 ClassAbility75-1
0 268482320 ClassAbility75-2
0 268482320 ClassAbility75-3
0 268482320 ClassAbility80-1
0 268482320 ClassAbility80-2
0 268482320 ClassAbility80-3
我需要这样的输出:
for emergentAbilities 65 and 70 = result count 6
我尝试了这个 SQL 请求,但 returns 我 1 :
SELECT COUNT(distinct var) AS COUNT
from character_certifications
where classId=0 AND charId=268482320 AND var"EmergentAbility65-1"
我也试过这个,它返回给我 12:
SELECT COUNT(distinct var) AS COUNT
from character_certifications
where classId=0 AND charId=268482320
所有紧急能力65和70的总和怎么算?
并且在某些情况下,角色没有 "all" 他们可以拥有的紧急能力 65 和 70 例如:
如果可以,请调整您的架构以拆分该复合字符串,或者将两个关键组件分解为派生列,以便您可以快速对它们求和。然后就这么简单:
SELECT var, SUM(column_b)
FROM character_certifications
WHERE column_a IN ('EmergentAbility65', 'EmergentAbility70')
GROUP BY column_a
其中column_a
和column_b
代表var
的两个组成部分。如果这些列被索引,这个查询运行得非常快。
如果您做不到,您将不得不忍受非常昂贵的 table 扫描,使用 SUBSTRING_INDEX(var, '-', -1)
之类的东西来提取组件。这在大 tables 上往往非常慢。
你应该尝试这样的事情:
SELECT COUNT(distinct var) AS COUNT
from character_certifications
where classId=0 AND charId=268482320
AND (var LIKE "EmergentAbility65%" OR var LIKE "EmergentAbility70%")
试试看 here.