Mysql
 sql >> база данни >  >> RDS >> Mysql

Изберете всички колони, по-големи от някаква стойност

Вашата структура на данните не е нормализирана. Но ако искате да отидете по този път, използвайте:

select sub.student
FROM (
  select t.timestamp,
    t.Name,
    t.Total,
    c.col AS student,
    case c.col
      when 'Student1' then Student1
      when 'Student2' then Student2
      when 'Student3' then Student3
      -- ...
    end as d
  from mytable t
  cross join
  (
    select 'Student1' as col
    union all select 'Student2'
    union all select 'Student3'
    -- ...
  ) c
) AS sub
WHERE sub.timestamp = '20150911'
  AND sub.d > 0;
  -- sub.d = 'NA'
  -- sub.d = 0

SqlFiddleDemo

Изход:

╔══════════╗
║ student  ║
╠══════════╣
║ Student1 ║
║ Student2 ║
╚══════════╝

Ако искате резултат, разделен със запетая, използвайте:

select GROUP_CONCAT(sub.student ORDER BY sub.student) AS result

SqlFiddleDemo2

Изход:

╔═══════════════════╗
║       result      ║
╠═══════════════════╣
║ Student1,Student2 ║
╚═══════════════════╝



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да наложите условно ограничение за уникалност

  2. Как да промените групово MySQL Triggers DEFINER

  3. Превод на Oracle user_indexes в MySQL

  4. MySQL отношения

  5. Включително извиквания на DB функции в python MySQLdb executemany()