sql >> Database teknologi >  >> RDS >> Mysql

Vælg alle kolonner, der er større end en værdi

Din datastruktur er ikke normaliseret. Men hvis du vil gå denne vej, brug:

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

Output:

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

Hvis du ønsker et kommasepareret resultat, brug:

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

SqlFiddleDemo2

Output:

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


  1. Hvordan gemmer jeg metrics for min webapp?

  2. Indstil startværdi for kolonne med autoincrement

  3. Kan jeg kopiere :OLD og :NEW pseudo-records i/til en Oracle-lagret procedure?

  4. For mange forbindelser Hibernate og mysql