簡體   English   中英

根據列值僅選擇一次MySQL記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM