? 發問時間: 電腦與網際網路程式設計 · 1 0 年前

SQL語句中, GROUP BY 2個欄位相同

我有

A B (分別有欄位A、B)

1 1

1 1

1 2

2 1

我要用 GROUP BY ,當兩個欄位相同是不出現

就會變成

1 1

1 2

2 1

但是 GROUP BY 只可以用1個欄位

我如果用GROUP BY A

只剩下

1 2

2 1

這樣

1 2會不見

有沒有辦法是兩個欄位完全相同是才出現一個?

已更新項目:

重複的不出現,去除完全相同的資料

如果用(DISTINCT 或ORDER BY 餐廳名稱)

這兩個都是只可以比對一個欄位而已

像是:

(餐廳名稱)(食物名)<-欄位名

1 台中雞肉飯 雞肉飯

2 台中雞肉飯 雞肉飯

3 台中雞肉飯 小菜

4 阿岸米糕  米糕

2 個已更新項目:

ORDER BY 餐廳名稱的話

2台中雞肉飯 雞肉飯跟

3台中雞肉飯 小菜

都會不顯示

但這樣就錯了,

(3台中雞肉飯 小菜)要出現才對!

有沒有辦法是兩個欄位都相同才會不顯示呢

我要出現

1 台中雞肉飯 雞肉飯

3 台中雞肉飯 小菜

4 阿岸米糕  米糕

只有第二筆是完全相同的才不出現!

3 個已更新項目:

打錯

是GROUP BY

4 個已更新項目:

阿強大大~

要怎麼比對~

5 個已更新項目:

阿強大大你是不是誤會我的意思了

我不是A(餐廳名稱)=B(食物名)

我是重複的第二筆不出現

有兩個欄位A(餐廳名稱)、B(食物名)

1 台中雞肉飯 雞肉飯

2 台中雞肉飯 雞肉飯 <-((這筆跟上面一樣,所以不出現))

3 台中雞肉飯 小菜  <-雖然餐廳名稱名一樣但要出現

4 阿岸米糕  米糕

5.4 阿岸米糕  雞肉飯 <-這筆也要出現 ,雖然食物名一樣

所以只有第2筆不要,不出現在網頁上

6 個已更新項目:

Arvin 大大,好感謝你喔

原來是加逗號。

那我還有一個問題

---

排行的問題~我要做排行,

分別是兩個欄位(a、b)要去計算筆數~~做成排行要怎麼寫

 (名稱)a  (食物名)b

台中雞肉飯 雞肉飯

台中雞肉飯 雞肉飯

台中雞肉飯 雞肉飯

台中雞肉飯 小菜

台中雞肉飯 小菜

阿岸米糕   米糕

出現排行如下:

台中雞肉飯 雞肉飯(因為有 三筆)

台中雞肉飯 小菜  (因為有 二筆)

阿岸米糕   米糕

7 個已更新項目:

SELECT count(欄位A) as abc FROM customer_ex_main

group by 欄位B,欄位A

ORDER BY abc DESC

為什麼變成空的~完全沒都西?

8 個已更新項目:

用上面count就可以了

9 個已更新項目:

那我的分頁怎麼寫呢?

因為相同的不出現

假設我資料庫有5筆資料!

但我網頁只出現3筆~

但我寫的分頁會出現總共5筆,可是我網頁上才3筆而已

要怎麼寫呢

10 個已更新項目:

依select出來的資料筆數作分頁要怎麼寫?

11 個已更新項目:

$query_Recordset1 =

"SELECT * FROM customer_ex_main

INNER JOIN customer_ex_detail ON(customer_ex_main.a_id = customer_ex_detail.a_id)

INNER JOIN shop_infor ON(customer_ex_detail.s_id = shop_infor.s_id)

INNER JOIN restype ON(shop_infor.rt_id = restype.rt_id)

12 個已更新項目:

INNER JOIN restype ON(shop_infor.rt_id = restype.rt_id)

INNER JOIN food_name ON(customer_ex_detail.f_id = food_name.f_id)

INNER JOIN food_type ON(food_name.ft_id = food_type .ft_id) where price <101

group by customer_ex_detail.s_id,customer_ex_detail.f_id

";

13 個已更新項目:

$Recordset1 = mysql_query($query_Recordset1, $FoodBlog) or die(mysql_error());

$row_Recordset1 = mysql_fetch_assoc($Recordset1);

14 個已更新項目:

這是我的語法  

可是我加上你所說的查詢會有問題呢

不知道怎麼改~

假設我資料庫有5筆資料!

但我網頁只出現3筆~因為我用group by 讓重覆的不出現

但我寫的分頁會出現總共5筆,可是我網頁上才3筆而已

(正確要是3筆而不是5筆)

要怎麼寫呢

4 個解答

評分
  • Arvin
    Lv 5
    1 0 年前
    最佳解答

    MYSQL, MSSQL 都可以用的語法

    select A, B from Table group by A,B;

    輸出結果

    A B

    1 1

    1 2

    2 1

    2008-08-14 09:19:44 補充:

    select count(A), A, B from Table group by A,B order by num desc;

    輸出結果

    num A B

    2 1 1

    1 1 2

    1 2 1

    至於分頁的GOOGLE搜一下就有啦

    2008-08-14 11:07:02 補充:

    抱歉~~上面打錯了 少了 as num

    select count(A) as num, A, B from Table group by A,B order by num desc;

    2008-08-14 16:27:25 補充:

    http://twpug.net/modules/smartsection/item.php?ite...

  • 1 0 年前

    候選編號 001

    我忘了給點數給你

    真sorry

    不過我有投給你

    但分頁還是不行

  • 1 0 年前

    應該是select出來後再比對兩個欄位如果是相同就不處理...不相同才處理= =

    2008-08-13 22:47:07 補充:

    你的A和B是同ㄧ個表格的兩個欄位對吧??

    那你應該是

    $sql="select A,B from 資料表";

    $d=mysql_query($sql);

    while($data=mysql_fetch_array($d)){

    if($data["A欄位名"]==$data["B欄位名"]){

    ....這裡印出A和B的資料或是要做啥處理都行

    }

    else{

    不相同...所以不做處理........

    }

    }

  • 1 0 年前

    你是什麼情形要用GROUP BY ???

    2008-08-13 23:15:16 補充:

    GROUP BY 都作了~用Count就好了

    2008-08-13 23:52:53 補充:

    Count(*)

    2008-08-14 01:04:33 補充:

    依select出來的資料筆數作分頁就好~

    你該不會分頁是作死的吧~~

還有問題?馬上發問,尋求解答。