2016-04-17 10 views
1

I tableA haben hinzufügen und fügen Sie wollen Zählung SpaltenNr es ist Zahl insgesamt Reihen von tableA und ist in allen Zeilen in Ergebnistabelle gleichen, tableA wie unten:Wie mysql Zählung SpaltenNr auf eine Tabelle

  • note: Tabelle A ist das Ergebnis der anderen Abfrage

tableA

id | name | rank | 
------------------- 
1 | John | 12 | 
2 | Maria | 18 | 
3 | Steph | 44 | 
4 | Jay | 17 | 

und Ergebnis sollte sein:

id | name | rank | total | rank/total 
--------------------------------------- 
1 | John | 12 | 4 | 3 
2 | Maria | 18 | 4 | 4.5 
3 | Steph | 44 | 4 | 11 
4 | Jay | 17 | 4 | 4.25 

wie kann man das mit MYSQL

+0

Diese mehrmals auf SO bereits beantwortet wurde. Hast du vorher gesucht? – Ageonix

+0

@Ageonix ja aber keine Antwort finden, kann mir helfen, zu finden? – Bavidesign

Antwort

0

die gesamten Zeilen in Ihrer Tabelle zu erhalten, dies zu tun:

SELEcT count(*) FROM TableA 

Sie dann diese Abfrage in den SELEcT einer anderen Abfrage kombinieren und eine Berechnung machen von ihm, gibt die dies:

SELEcT *, (SELEcT count(*) FROM TableA) AS total, rank/(SELEcT count(*) FROM TableA) AS 'rank/total' 
FROM tableA 

wenn tableA das Ergebnis einer anderen Abfrage, sind

SELEcT *, (SELEcT count(*) FROM TableA) AS total, rank/(SELEcT count(*) FROM TableA) AS 'rank/total' 
FROM (insert_the_other_query_here) tableA 
+0

aus beachten Sie, wie kann ich auf Tabelle A verweisen, wenn es keine echte Tabelle ist? – Bavidesign

+0

statt tun 'FROM tableA', tun' FROM (insert_your_query_here) tableA' –

+0

Problem ist TableA generiert von schweren Abfrage, die 1 s dauerte, wenn ich es dreimal in Antwort wiederhole, ist es Aufruf, dass Abfrage 3 mal das Ergebnis – Bavidesign

0

überprüfen, ob eine Variable helfen Sie helfen Ihnen:

SET @total = SELECT COUNT(1) FROM tableA;

SELECT name, rank, @total AS total, rank/@total AS 'rank/total' FROM tableA;

+0

Hinweis: Tabelle A ist das Ergebnis einer anderen Abfrage, und es ist eine schwere Abfrage, die dauerte 1-2 Sekunden – Bavidesign

+0

gut im Vergleich zu den anderen Vorschlägen führt es die Abfrage nur zweimal. Nicht sicher, wo die Leistung weiter verbessert werden kann. Sie könnten Ihre tableA-Abfrage in eine separate Tabelle lesen oder eine Sicht daraus erstellen, aber ich bezweifle, dass sie die Sache erheblich beschleunigt. – siax

+0

vielleicht möchten Sie Ihre "tableA" -Abfrage mit uns teilen, vielleicht gibt es den tatsächlichen Ort, um nach Verbesserungen zu suchen – siax

Verwandte Themen