MySQL - считая две вещи с разными условиями

В приведенном выше ответе кто-то спросил, есть ли способ получить файл md5 для файлов размером более 5G.

Ответ, который я мог бы дать для получения значения MD5 (для файлов размером более 5G), состоял бы в том, чтобы либо добавить его вручную в метаданные, либо использовать программу для загрузки, которая добавит эту информацию.

Например, я использовал s3cmd для загрузки файла и добавил следующие метаданные.

$ aws s3api head-object --bucket xxxxxxx --key noarch/epel-release-6-8.noarch.rpm 
{
  "AcceptRanges": "bytes", 
  "ContentType": "binary/octet-stream", 
  "LastModified": "Sat, 19 Sep 2015 03:27:25 GMT", 
  "ContentLength": 14540, 
  "ETag": "\"2cd0ae668a585a14e07c2ea4f264d79b\"", 
  "Metadata": {
    "s3cmd-attrs": "uid:502/gname:staff/uname:xxxxxx/gid:20/mode:33188/mtime:1352129496/atime:1441758431/md5:2cd0ae668a585a14e07c2ea4f264d79b/ctime:1441385182"
  }
}

Это не прямое решение с использованием ETag, но это способ заполнить нужные метаданные (MD5) таким образом, чтобы вы могли получить к нему доступ. Он все равно будет терпеть неудачу, если кто-то загрузит файл без метаданных.

13
задан fruitcup 14 May 2012 в 00:52
поделиться

1 ответ

SELECT 
  COUNT( CASE WHEN n1 = 'J' THEN 1 END ) AS t1,
  COUNT( CASE WHEN n2 = 'C' THEN 1 END ) AS t2,
  COUNT( CASE WHEN n3 = 'K' THEN 1 END ) AS t3 
FROM test

Используя COUNT(CASE...), можно получить количество двух столбцов от единственной таблицы, даже когда условия для обоих отличаются (например: Получите количество J из n1 столбца и количество C из n2 столбца и так далее..)

Таблица: тест

+----+----+----+----+
| id | n1 | n2 | n3 |
|----+----+----+----+
|  1 | J  | C  | K  |
|----+----+----+----+
|  1 | J  | C  | F  |
|----+----+----+----+
|  1 | J  | K  | C  |
|----+----+----+----+
|  1 | K  | K  | C  |
|----+----+----+----+

Результат:

+----+----+----+
| t1 | t2 | t3 |
|----+----+----+
|  3 | 2  | 1  |
|----+----+----+
1
ответ дан 30 November 2019 в 11:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: