Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अद्यतन से mysql वापसी परिणाम

मैं एक साधारण फ़ंक्शन बनाउंगा:

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 ;

जो तालिकाओं को अद्यतन करता है और संयोजित आईडी लौटाता है।

PHP से आप इसे कहते हैं:

SELECT mydb.updateMytable()

और आप एक हलचल में आईडी प्राप्त करते हैं:1,2,7,54,132 आदि...

अपडेट करें:

मेरा फ़ंक्शन अल्पविराम से अलग आईडी युक्त स्ट्रिंग लौटा रहा है:'1,5,7,52,...' ये आईडी केवल वही हैं जिन्हें फंक्शन कॉल के दौरान अपडेट किया गया होता,

बेहतर php-mysql उदाहरण होगा (आप पीडीओ का उपयोग कर सकते हैं और करेंगे):

$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";
}

mydb को बदलना भी याद रखें और mytable आपके डेटाबेस नामों के अनुसार

अंतिम

क्योंकि आपको अधिक जटिल कार्यक्षमता की आवश्यकता है, बस दो क्वेरी चलाएँ:

पहला रन:

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

अगला रन:

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. कॉलम में अधिकतम मान सेट करें

  2. MySQL में टेबल कॉपी कैसे करें

  3. Laravel प्रत्येक समूह के लिए नवीनतम रिकॉर्ड प्राप्त करें

  4. Django 2.* mysqlclient के साथ MySQL डेटाबेस में Collation कैसे सेट करें?

  5. MySQL डेटाबेस में फ़ील्ड्स को पॉप्युलेट करना