我正在使用 Access 資料庫并有兩個表:
| ID_1 | 數字 | 其他一些資料 |
|---|---|---|
| 1 | 1 | 資料 |
| 2 | 2 | 資料 |
| 3 | 3 | 資料 |
| 4 | 4 | 資料 |
| 5 | 3 | 資料 |
| 6 | 1 | 資料 |
| 7 | 2 | 資料 |
| 8 | 3 | 資料 |
| 9 | 1 | 資料 |
| 10 | 1 | 資料 |
| 11 | 2 | 資料 |
| 12 | 3 | 資料 |
| 13 | 4 | 資料 |
| 14 | 1 | 資料 |
| 15 | 2 | 資料 |
| 16 | 3 | 資料 |
| 17 | 4 | 資料 |
| 18 | 3 | 資料 |
| 19 | 3 | 資料 |
| ID_2 | 數字 | 其他一些資料 |
|---|---|---|
| 1 | 3 | 資料 |
| 2 | 1 | 資料 |
| 3 | 2 | 資料 |
| 4 | 3 | 資料 |
| 5 | 2 | 資料 |
如您所見,兩個表都有重復的資料。我需要一個查詢來選擇第一個表中與第二個表中的每個記錄匹配的所有記錄,它們與 Number 欄位相關。這些記錄不重復也是必要的(即,查詢在選擇時不重復值)。對于給定的示例,我應該得到以下結果:
| ID | ID_1 | 數字 | 其他一些資料 |
|---|---|---|---|
| 1 | 3 | 3 | 資料 |
| 2 | 5 | 3 | 資料 |
| 3 | 8 | 3 | 資料 |
| 4 | 12 | 3 | 資料 |
| 5 | 16 | 3 | 資料 |
| 6 | 18 | 3 | 資料 |
| 7 | 19 | 3 | 資料 |
| 8 | 1 | 1 | 資料 |
| 9 | 6 | 1 | 資料 |
| 10 | 9 | 1 | 資料 |
| 11 | 10 | 1 | 資料 |
| 12 | 14 | 1 | 資料 |
| 13 | 2 | 2 | 資料 |
| 14 | 7 | 2 | 資料 |
| 15 | 11 | 2 | 資料 |
| 16 | 15 | 2 | 資料 |
我在想也許我可以使用 Join,但我仍然不知道如何;試過Where,但也沒有找到它的用途。你能幫我解決這個問題嗎?
uj5u.com熱心網友回復:
我看不到您從哪里生成輸出 ID 欄位 - 或者您從哪里選擇 Data 欄位,所以這是最好的猜測。
SELECT Table1.ID_1, Table1.Number, Table1.[Some other data]
FROM Table1
WHERE (Table1.Number In (SELECT Number From Table2))
ORDER BY Table1.Number, Table1.ID_1;
看起來像這樣:

uj5u.com熱心網友回復:
MySql 資料庫資料結構
create table tbl1(ID_1 serial, Number int);
create table tbl2(ID_2 serial, Number int);
insert into tbl1(Number) values (1),(2),(3),(4),(3),(1),(2),(3),(1),(1),(2),(3),(4),(1),(2),(3),(4),(3),(3);
insert into tbl2(Number) values (3),(1),(2),(3),(2);
- 查詢(帶 s),需要洗掉重復項
- 視窗函式count(tbl1.Number) OVER(PARTITION BY Number)通過匹配數字的計數為我們排序結果
- 需要@rownum變數來計算行數
with s as (select distinct Number from tbl2),
f as (select ID_1,tbl1.Number from tbl1 left join s on
(tbl1.Number=s.Number) where s.Number is not null order by
count(tbl1.Number) OVER(PARTITION BY Number) desc)
select @rownum := @rownum 1 AS ID,ID_1,Number from f, (SELECT @rownum := 0) r;
結果
------ ------ --------
| ID | ID_1 | Number |
------ ------ --------
| 1 | 3 | 3 |
| 2 | 5 | 3 |
| 3 | 8 | 3 |
| 4 | 12 | 3 |
| 5 | 16 | 3 |
| 6 | 18 | 3 |
| 7 | 19 | 3 |
| 8 | 1 | 1 |
| 9 | 6 | 1 |
| 10 | 9 | 1 |
| 11 | 10 | 1 |
| 12 | 14 | 1 |
| 13 | 2 | 2 |
| 14 | 7 | 2 |
| 15 | 11 | 2 |
| 16 | 15 | 2 |
------ ------ --------
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/492047.html
上一篇:按價值最高的ID分組
