1

で購入表。お客様が同じ本を購入すると、表に 1 行追加されます。したがって、購入ページで購入リストを見ると、次のようになります。

buy1 price1 downloadlink1
buy1 price1 downloadlink1
buy1 price1 downloadlink1
buy2 price2 downloadlink2
buy2 price2 downloadlink2
buy2 price2 downloadlink2

しかし、同じ行の価格とダウンロードリンクの削除が必要で、最初の行のみがこの値を次のように表示します:

buy1 price1 downloadlink1
buy1 
buy1 
buy2 price2 downloadlink2
buy2 
buy2 

どのようにSQLクエリを使用できますか???

4

3 に答える 3

1

それがMS SQLサーバーであれば、使用を提案できますがrow_number over() 、あなたの状況では、これを試すことを提案できます(テーブルにIDがあると思います)

select
    A.sub,
    case when A.frst = 1 then A.user else null end as user,
    case when A.frst = 1 then A.versionid else null end as versionid,
    case when A.frst = 1 then A.hard else null end as hard,
    case when A.frst = 1 then A.active else null end as active,
    case when A.frst = 1 then A.res else null end as res
from
(
    select
        *,
        case
            when exists
            (
                select * 
                from buy as tt
                where
                    tt.sub = t.sub and tt.res = t.res and
                    tt.user = t.user and tt.versionid = t.versionid and
                    tt.hard = t.hard and tt.active = t.active and
                    tt.id < t.id
            ) then 0
            else 1
        end as frst
    from buy as t
) as A
order by A.sub, A.frst desc

SQL フィドル

于 2012-11-28T08:33:44.990 に答える
0

distinctダウンロードリンクの実行中にSQLクエリで使用

于 2012-11-28T08:23:59.107 に答える
0

その特定のアイテムがそのユーザーによってテーブルに追加されていない場合、テーブルに行を追加します

そのアイテムがすでに存在する場合 (アイテム ID とユーザー ID を使用して確認)、テーブルを更新します

于 2012-11-28T08:24:32.553 に答える