Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz i zwróć tylko sumę kontrolną (nie tabelę) z tabeli sum kontrolnych w mysql

Możesz to zrobić według kolumny lub sumy kolumn. Poniżej znajduje się test na moim stole.

SELECT sum(crc32(email)) as crc from users;
+-------------+
| crc         |
+-------------+
| 10679459550 |
+-------------+


select sum(crc32(concat(user_id,first_name,last_name,email,reportingManager))) as crc from users;
+------------+
| crc        |
+------------+
| 7196315383 |
+------------+

Edytuj

W procedurze składowanej, do której przekazano nazwę bazy danych i nazwę tabeli, poniższy kod zwróci crc. Przechodzi do specjalnego INFORMATION_SCHEMA db, aby pobrać nazwy kolumn dla Ciebie i używa wszystkich tych kolumn i wartości do wygenerowania sumy kontrolnej.

Procedura składowana:

drop procedure if exists getTableCRC32;
DELIMITER $$
create procedure getTableCRC32
(   dbname varchar(80),
    tableName varchar(80)
)
BEGIN
    set @sql1="select GROUP_CONCAT(`column_name` SEPARATOR ',') into @colNames";
    set @sql1=concat(@sql1," FROM `INFORMATION_SCHEMA`.`COLUMNS`");
    set @sql1=concat(@sql1," WHERE `TABLE_SCHEMA`='",dbName,"'");
    set @sql1=concat(@sql1," AND `TABLE_NAME`='",tableName,"'");
    -- select @sql1;
    PREPARE stmt1 FROM @sql1;
    EXECUTE stmt1;
    DEALLOCATE PREPARE stmt1;
    -- select @colNames;
    set @sql2=concat( 'select sum(crc32(concat(',  @colNames, '))) as crc from ',tableName);
    -- select @sql2;
    PREPARE stmt2 FROM @sql2;
    EXECUTE stmt2;
    DEALLOCATE PREPARE stmt2;
END
$$
DELIMITER ;

Przetestuj:

call getTableCRC32('so_gibberish','users');
+------------+
| crc        |
+------------+
| 7196315383 |
+------------+
call getTableCRC32('so_gibberish','fish');
+------------+
| crc        |
+------------+
| 3273020843 |
+------------+

Strona instrukcji dla crc32



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połączenie MySQL nie działa:2002 Brak takiego pliku lub katalogu

  2. mysql min gdzie oświadczenie

  3. używanie pól wirtualnych do sumowania wartości w cakephp

  4. Wiele COUNT() dla wielu warunków w jednym zapytaniu (MySQL)

  5. PHP i MySQL porównaj hasło