[英]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.