Gibt es in MySQL eine Möglichkeit, die "Gesamt" -Felder auf Null zu setzen, wenn sie NULL sind?
Folgendes habe ich:
SELECT uo.order_id, uo.order_total, uo.order_status,
(SELECT SUM(uop.price * uop.qty)
FROM uc_order_products uop
WHERE uo.order_id = uop.order_id
) AS products_subtotal,
(SELECT SUM(upr.amount)
FROM uc_payment_receipts upr
WHERE uo.order_id = upr.order_id
) AS payment_received,
(SELECT SUM(uoli.amount)
FROM uc_order_line_items uoli
WHERE uo.order_id = uoli.order_id
) AS line_item_subtotal
FROM uc_orders uo
WHERE uo.order_status NOT IN ("future", "canceled")
AND uo.uid = 4172;
Die Daten kommen gut heraus, außer die NULL-Felder sollten sein 0
.
Wie kann ich in MySQL 0 für NULL zurückgeben?
Sie können
coalesce(column_name,0)
statt nur verwendencolumn_name
. Diecoalesce
Funktion gibt den ersten Nicht-NULL-Wert in der Liste zurück.Ich sollte erwähnen, dass solche Funktionen pro Zeile normalerweise für die Skalierbarkeit problematisch sind. Wenn Sie der Meinung sind, dass Ihre Datenbank eine anständige Größe hat, ist es oft besser, zusätzliche Spalten und Trigger zu verwenden, um die Kosten von der
select
auf die zu verschiebeninsert/update
.Dadurch werden die Kosten amortisiert, vorausgesetzt, Ihre Datenbank wird häufiger gelesen als geschrieben (und die meisten von ihnen sind es).
quelle
Keine der obigen Antworten war für mich vollständig. Wenn Ihr Feld benannt ist
field
, sollte der Selektor der folgende sein:Zum Beispiel in einer SELECT-Abfrage:
Hoffe, dies kann jemandem helfen, keine Zeit zu verschwenden.
quelle
Sie können so etwas versuchen
Das Attribut X wird als leer angenommen, wenn es sich um eine leere Zeichenfolge handelt. Danach können Sie anstelle des letzten Werts eine Null deklarieren. In einem anderen Fall würde es seinen ursprünglichen Wert behalten.
Wie auch immer, nur um einen anderen Weg zu finden, das zu tun.
quelle
Ja, die IFNULL-Funktion arbeitet, um das gewünschte Ergebnis zu erzielen.
quelle