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

Как да изместите стойностите на колоните в MySQL?

Използвайте coalesce() и подзаявка

изберете id, o1, CASE WHEN o2!=o1 THEN o2 END o2, CASE WHEN o3!=o2 THEN o3 END o3 FROM( изберете id, coalesce(org1,org2,org3) o1, coalesce(org2 ,org3) o2, org3 o3 от tbl ) t 

АКТУАЛИЗИРАНЕ

Предишният отговор не беше достатъчен, както R2D2 установи съвсем правилно. За съжаление не можете да правите CTEs в mysql, затова създадох изглед вместо това (разширих примера с друга колона org4 ):

CREATE VIEW vert AS select id,1 n, org1 org FROM tbl where org1>'' UNION ALLselect id,2, org2 FROM tbl where org2>'' UNION ALLselect id,3, org3 FROM tbl където org3>'' UNION ALL изберете id,4, org4 ОТ tbl където org4>''; 

С този изглед вече е възможно да направите следното:

ИЗБЕРЕТЕ идентификатор,(изберете org от vert, където i=id подреждане по n ограничение 1) org1,(изберете org от vert, където i=id подреждане по n ограничение 1,1) org2,(изберете org от vert където i=id подреждане по n ограничение 2,1) org3,(изберете org от vert където i=id подреждане по n ограничение 3,1) org4FROM tbl 

Не е красиво, но си върши работата, вижте тук:SQLfiddle

въвеждане:

<предварителен код>| ID | org1 | org2 | org3 | org4 ||----|--------|--------|--------|--------|| 1 | HR | (нула) | Персонал | ИТ || 2 | (нула) | ИТ | Разработчик | (нула) || 3 | (нула) | (нула) | Финанси | HR |

изход:

<предварителен код>| ID | org1 | org2 | org3 | org4 ||----|--------|-------|--------|--------|| 1 | HR | Персонал | ИТ | (нула) || 2 | ИТ | Разработчик | (нула) | (нула) || 3 | Финанси | HR | (нула) | (нула) |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсите просто пълнотекстово търсене? Опитайте MySQL InnoDB + CakePHP с Word Stemming

  2. Връщане на резултати от заявка въз основа на днешна дата в SQL (MySQL), част 2

  3. Автоматично опресняване на Android при вмъкване на нови данни в списъка

  4. Има ли причина да не използвате съхранени процедури за всяка заявка?

  5. Актуализиране на множество колони от подзаявка