5
से परिणाम के आधार पर मेरे पास निम्न क्वेरी:अद्यतन एक तालिका में कई पंक्तियों सबक्वेरी
SELECT
stat.mcq_id,
ROUND(stat.total_score/stat.num_taken, 2) AS avg_score
FROM (
SELECT
user_mcq.mcq_id,
SUM(score) AS total_score,
COUNT(user_mcq.id) AS num_taken
FROM user_mcq
INNER JOIN user ON (user.id = user_mcq.user_id)
WHERE user.level_id =3
AND user_mcq.is_complete =1
GROUP BY user_mcq.mcq_id
) AS stat
यह पैदा करता है:
mcq_id avg_score
1 5.75
2 9.22
6 8.81
7 8.94
14 7.00
16 9.46
मैं अद्यतन करने के लिए एक और तालिका का उपयोग कर mcq
कहा जाता है इस का उपयोग करना चाहेंगे mcq_id
परिणाम से mcq.id
मैंने निम्नलिखित कोशिश की है, लेकिन सफलता के बिना:
UPDATE mcq SET mcq.avg_score = stats.avg_score FROM (
SELECT
stat.mcq_id,
ROUND(stat.total_score/stat.num_taken, 2) AS avg_score
FROM (
SELECT
user_mcq.mcq_id,
SUM(score) AS total_score,
COUNT(user_mcq.id) AS num_taken
FROM user_mcq
INNER JOIN user ON (user.id = user_mcq.user_id)
WHERE user.level_id =3
AND user_mcq.is_complete =1
GROUP BY user_mcq.mcq_id
) AS stat
) AS stats
WHERE mcq.id = stats.mcq_id;
यह देता है:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (SELECT stat.mcq_id, ROUND(stat.total_score/stat.num_taken, 2) A' at line 1
बिल्कुल सही, बहुत धन्यवाद! :) – Adam
अच्छा .. यह वास्तव में मेरा समय बचा है .. – faruk