2018年9月6日 星期四

Oracle x 刪除 x 大量重複資料


參考資料 : 掃文資訊

做了第一次後沒將SQL存起來,想說下次用就會了,結果還是忘記,這次記在這裡下次就可以來這裡看


--1.先找到重複資料的rowid,並找出rowid最大或最小值,作為刪除的條件
select min(rowid) from yourTable group by TableColumn having count(TableColumn) > 1;

--2.根據TableColumn找出數量大於1的重複資料
select TableColumn from yourTable group by TableColumn having count(TableColumn) > 1;

--3.根據上兩個條件進行執行刪除操作
delete from yourTable t where t.TableColumn in (
select TableColumn from yourTable group by TableColumn having count(TableColumn) > 1
)
and rowid not in (
select min(rowid) from yourTable group by TableColumn having count(TableColumn) > 1
);

--第一點的min(rowid)可以改成max(rowid),差別在於min會找出最早建立的資料(舊資料);max會找出最晚建立的資料(新資料)

2018年6月20日 星期三

C# x 1到100陣列 x 隨機不重複


昨天去xx看到不錯的考題,當下沒有解出來,寫了不隨機不重複的Code,後來回家想想才發現原來這麼簡單...



using System;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rd = new Random();
            string strNum="";
            int[] ai = new int[100];
            int rNum;
            for (int i = 1; i <= 100; i++)
            {
                rNum = rd.Next(1, 101);//取亂數
                if (Array.IndexOf(ai, rNum) == -1)//用Array.IndexOf判斷有沒有重複,沒有重複的話回傳值就是-1
                {
                    ai[i - 1] = rNum;
                }
                else//用Array.IndexOf判斷有沒有重複,有重複就會到這裡
                {
                    while (Array.IndexOf(ai, rNum) != -1)//如果不等於 -1 那就在重新跑一次亂數取值,直到等於-1
                    {
                        rNum = rd.Next(1, 101);
                    }
                    ai[i - 1] = rNum;//Array.IndexOf = -1 就會跳出while迴圈 走到這裡
                }
            }

            foreach (int strnum in ai) //將陣列的值取出
            {
                strNum += strnum.ToString()+" , ";
            }
            Console.WriteLine(strNum);
            Console.ReadLine();
        }
    }
}