簡體   English   中英

檢查忽略其他列數據的不同值

[英]Check distinct value ignoring other columns data

如果我有一個包含這樣數據的表:

   Col1 |  Col2 | Col3

   111  |  a     | 

   222  |  b     |  1

   111  |        |

我希望只從我的臨時表中選擇Distinct Col1,然后插入另一個表。但是如上表所示,第二個“111”也會被選中,因為它有不同的Col2數據。

或者如果我只選擇Distinct Col1,其他列數據將被忽略...

那么有什么方法可以解決這個問題嗎? 我希望只選擇第一個插入的相同Col1數據行。

我正在使用此查詢:

mysql_query("INSERT DELAYED INTO Tableb (Col1,Col2,Col3) SELECT DISTINCT Col1,Col2,Col3 FROM TempTable"); 

謝謝你的回復。

PS:我不確定如何根據我的問題指定標題......也許有人可以幫助我。

也許這樣的事情(這可能是你想要的):

INSERT INTO Tableb
(
    Col1,Col2,Col3
)
SELECT
    t.Col1,
    MAX(t.Col2) AS Col2,
    MAX(t.Col3) AS Col3
FROM
    TempTable as t
GROUP BY
    t.Col1

或者如果你想要MIN值。 像這樣:

INSERT INTO Tableb
(
    Col1,Col2,Col3
)
SELECT
    t.Col1,
    MIN(t.Col2) AS Col2,
    MIN(t.Col3) AS Col3
FROM
    TempTable as t
GROUP BY
    t.Col1

首先,您需要確定col1的每個不同值的最后一個ID,然后選擇包含此id的行:

INSERT DELAYED INTO Tableb (Col1,Col2,Col3) 
SELECT TempTable.Col1, TempTable.Col2, TempTable.Col3
from TempTable
inner join
(
   select Col1, max(ID) ID
     from TempTable
    group by Col1
) c
ON TempTable.ID = c.ID

內部查詢返回要插入的ID,因此只需將它們連接到原始表即可過濾表。

如果要首先插入TempTable記錄,請用min(id)替換max(id)。

mysql_query("INSERT DELAYED INTO Tableb (Col1,Col2,Col3) SELECT Col1, MAX(t.Col2) AS Col2, MAX(t.Col3) AS Col3 FROM TempTable GROUP BY Col1");
INSERT DELAYED INTO Tableb (Col1,Col2,Col3) SELECT Col1,Col2,Col3 FROM TempTable GROUP BY Col1 ORDER BY [your way of sorting here]

那樣做嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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