[英]Select records for MySQL only once based on a column value
我有一個存儲交易信息的表。 每筆交易都有一個唯一的(自動遞增的)id列,一個帶有客戶ID號的列,一個名為bill_paid
的列(用於指示該交易是否已由客戶用“是”或“否”支付)以及其他幾個列與我的問題無關的其他信息。
我想從尚未為其支付賬單的交易表中選擇所有客戶ID,但是如果客戶有多個未支付賬單的交易,我不想多次選擇它們。 這樣,我可以為該客戶生成一張包含其所欠所有交易的賬單,而不是為每筆交易生成單獨的賬單。 我將如何建立一個對我有用的查詢?
對於每個bill_paid
等於'no'的客戶,精確地返回一個customer_id
:
SELECT
t.customer_id
FROM
transactions t
WHERE
t.bill_paid = 'no'
GROUP BY
t.customer_id
編輯:
GROUP BY
匯總您的結果集。
注意事項:所選的每一列都必須“分組”或以某種方式匯總。 如nikic所示,您可以使用SUM
來獲得所欠的總額,例如:
SELECT
t.customer_id
, SUM(t.amount) AS TOTAL_OWED
FROM
transactions AS t
WHERE
t.bill_paid = 'no'
GROUP BY
t.customer_id
t
只是一個別名。
因此,現在不必在任何地方鍵入事務,只需鍵入t
。 由於您僅查詢一張表,因此此處不需要別名,但是我發現它們對於較大的查詢而言非常有價值。 您可以選擇鍵入AS
,以更清楚地表明您正在使用別名。
您可以嘗試按操作員分組,例如按客戶分組。
SELECT customer, SUM(toPay) FROM .. GROUP BY customer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.