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

mysql zwraca wyniki z aktualizacji

Stworzyłbym prostą funkcję:

DELIMITER $$

DROP FUNCTION IF EXISTS `mydb`.`updateMytable`$$

CREATE
    /*[DEFINER = { user | CURRENT_USER }]*/
    FUNCTION `mydb`.`updateMytable`() RETURNS TEXT 

    BEGIN

        SET @updated := '';

        UPDATE mytable
            SET viewed = 1
        WHERE viewed = 0
            AND ( 
                SELECT @updated := CONCAT_WS(',', @updated, id) 
            ) != ''
        ;

        RETURN TRIM(LEADING ',' FROM @updated); 

    END$$
DELIMITER ;

który aktualizuje tabele i zwraca połączone identyfikatory.

Z php nazywasz to:

SELECT mydb.updateMytable()

i dostajesz identyfikatory w mieszaniu:1,2,7,54,132 itp...

Aktualizacja:

moja funkcja zwraca ciąg znaków zawierający identyfikatory oddzielone przecinkami:'1,5,7,52,...' te identyfikatory są tylko tymi, które zostałyby zaktualizowane podczas wywołania funkcji,

lepszym przykładem byłby php-mysql (możesz i użyjesz PDO):

$query = "SELECT mydb.updateMytable()";
$res = mysql_query($query);
$arr = mysql_fetch_array($res);

$ids = explode(',', $arr[0]);

// now you can do whatever you want to do with ids
foreach ($ids as $id) 
{
    echo "Hoorah: updated $id\n";
}

pamiętaj także o zmianie mydb i mytable zgodnie z nazwami Twojej bazy danych

Końcowy

ponieważ potrzebujesz bardziej złożonej funkcjonalności, po prostu uruchom dwa zapytania:

Pierwsze uruchomienie:

SELECT a, b, c
FROM mytable
WHERE viewed = 0

Następny bieg:

UPDATE mytable 
    SET viewed = 1 
WHERE viewed = 0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd SQL:# 1064 podczas tworzenia funkcji w plsql przy użyciu mysql

  2. Jak dodawać i zmieniać tagi XML w PHP

  3. Elokwentny wiele-do-wielu-do-wielu - jak łatwo załadować odległą relację

  4. Sprawdź, czy nazwa użytkownika istnieje przy użyciu PHP PDO

  5. Jak wykonać kopię zapasową bazy danych MySQL w PHP?