[英]Select the top (of 0's and 1's) from multiple records using SQL for php
存在一個檢查表,用於說明是否已收集項目。
具有四個字段Code,Object,User,Got的非常簡單的結構。
最多有8個用戶可用。
例:-
Code Object User Caught
id01 Cheese JS 1
id01 Cheese DF 1
id01 Cheese AB 0
id02 Bread JS 0
id02 Bread DF 0
id02 Bread AB 0
id03 Milk JS 0
id03 Milk DF 1
id03 Milk AB 0
...等等。
我知道關系數據庫會更好。
我正在使用代碼:
SELECT Code, Caught, Max(Caught) FROM Checklist GROUP BY Code
但是它不能正確返回。 我需要它為任何用戶檢查過的每個項目僅獲取一個記錄。
因此所需的代碼將返回:
Code Object Caught
id01 Cheese 1
id02 Bread 0
id03 Milk 1
理想的最終結果將是放入php腳本,並顯示列表中至少有人檢查過的所有項目。
只需稍微更改您的SELECT
和GROUP BY
:
SELECT Code,Object, Max(Caught) AS Caught
FROM Table1
GROUP BY Code,Object
演示: SQL Fiddle
由於您采用的是Caught
的MAX
,因此將Caught
排除在SELECT
列表之外,並且由於它是SELECT
列表中的非聚合字段,因此您希望GROUP BY
Object
。
你有沒有嘗試過:
SELECT DISTINCT Code, Caught, Max(Caught) FROM Checklist
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.