एक और कॉलम अधिकतम मान से अपडेट

वोट
0

मैं एक मेज है states_risk:

id | state | municipally | rating 

उदाहरण:

id | state | municipally | rating 
 1     AG     AG1            5
 2     AG     AG2            6
 3     AG     AG3            2
 4     AG     AG4            1
 5     AG     OTHER          -
 6     AB     AB1            0.2
 7     AB     AB2            2
 8     AB     AB3            10
 9     AB     OTHER          -

मैं के लिए मूल्य मूल्यांकन अद्यतन करने की आवश्यकता municipally = OTHERसेट MAX(rating)द्वारा राज्य एजी मूल्य - अटल बिहारी, उदाहरण: आईडी 5 से क्योंकि के लिए राज्य एजी अधिकतम मूल्य है एक 6 मान सेट करें।

03/12/2019 को 00:02
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
0

यह आपको अधिकतम मान देता है

 SELECT state, max(rating) as maxrating
 FROM states_risk
 GROUP BY state

यह आपको जिन्हें आप अद्यतन करना चाहते हैं देता है

 SELECT id, state
 FROM states_risk
 WHERE municiplally = 'OTHER'

तो अद्यतन है

 UPDATE states_risk
 SET rating = (
   SELECT max(rating) as maxrating
   FROM states_risk inner
   WHERE inner.state = states_risk.state
 )
 WHERE municiplally = 'OTHER'
03/12/2019 को 00:07
का स्रोत उपयोगकर्ता

वोट
0

आप एक प्रश्न है कि प्रत्येक राज्य के लिए अधिकतम रेटिंग देता है करने के लिए तालिका में शामिल होने से यह कर सकते हैं:

update states_risk s inner join (
  select state, max(rating) rating
  from states_risk
  group by state
) g on g.state = s.state
set s.rating = g.rating
where s.municipally = 'OTHER';

देखें डेमो
परिणाम:

| id  | state | municipally | rating |
| --- | ----- | ----------- | ------ |
| 1   | AG    | AG1         | 5      |
| 2   | AG    | AG2         | 6      |
| 3   | AG    | AG3         | 2      |
| 4   | AG    | AG4         | 1      |
| 5   | AG    | OTHER       | 6      |
| 6   | AB    | AB1         | 0.2    |
| 7   | AB    | AB2         | 2      |
| 8   | AB    | AB3         | 10     |
| 9   | AB    | OTHER       | 10     |
03/12/2019 को 00:16
का स्रोत उपयोगकर्ता

वोट
0

अपने कॉलम में - यदि आप स्तंभ रेटिंग है ''। कास्ट किए जाने के स्तंभ की तरह भी जरूरत है

select version();
| संस्करण () |
| : -------- |
| 8.0.18 |
CREATE TABLE states_risk
    (`id` int, `state` varchar(2), `municipally` varchar(5), `rating` varchar(3))
;
INSERT INTO states_risk
    (`id`, `state`, `municipally`, `rating`)
VALUES
    (1, 'AG', 'AG1', '5'),
    (2, 'AG', 'AG2', '6'),
    (3, 'AG', 'AG3', '2'),
    (4, 'AG', 'AG4', '1'),
    (5, 'AG', 'OTHER', '-'),
    (6, 'AB', 'AB1', '0.2'),
    (7, 'AB', 'AB2', '2'),
    (8, 'AB', 'AB3', '10'),
    (9, 'AB', 'OTHER', '-')
;


Select * From states_risk;
आईडी | राज्य | विधान | रेटिंग
-: | : ---- | : ---------- | : -----
 1 | एजी | AG1 | 5     
 2 | एजी | AG2 | 6     
 3 | एजी | AG3 | 2     
 4 | एजी | AG4 | 1     
 5 | एजी | अन्य | -     
 6 | एबी | AB1 | 0.2   
 7 | एबी | AB2 | 2     
 8 | एबी | AB3 | 10    
 9 | एबी | अन्य | -     
SELECT state, MAX(CAST(rating as FLOAT)) MAXrating 
                              FROM states_risk WHERE rating <> '-' GROUP BY state
राज्य | MAXrating
: ---- | --------:
एजी | 6
एबी | 10
UPDATE states_risk sr INNER JOIN (SELECT state, MAX(CAST(rating as FLOAT)) MAXrating 
                              FROM states_risk WHERE rating <> '-' GROUP BY state) t1 
                              ON sr.state = t1.state
SET sr.rating = t1.MAXrating WHERE sr.municipally = 'OTHER';
Select * From states_risk;
आईडी | राज्य | विधान | रेटिंग
-: | : ---- | : ---------- | : -----
 1 | एजी | AG1 | 5     
 2 | एजी | AG2 | 6     
 3 | एजी | AG3 | 2     
 4 | एजी | AG4 | 1     
 5 | एजी | अन्य | 6     
 6 | एबी | AB1 | 0.2   
 7 | एबी | AB2 | 2     
 8 | एबी | AB3 | 10    
 9 | एबी | अन्य | 10    

डाटाबेस <> बेला यहाँ

03/12/2019 को 00:25
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more