簡體   English   中英

PostgreSql - SELECT Max 從另一個表中重復

[英]PostgreSql - SELECT Max repeated from another table

考慮我有兩個表tab1tab2

+-----------+-----------+
| ID_t1     |  col2     |
+-----------+-----------+
| 1         |  1        |
+-----------+-----------+
| 2         |  1        |
+-----------+-----------+

tab2

+-----------+-----------+
| ID_t2     |  ID_t1    |
+-----------+-----------+
| 1         |  1        |
+-----------+-----------+
| 2         |  1        |
+-----------+-----------+
| 3         |  1        |
+-----------+-----------+
| 4         |  2        |
+-----------+-----------+

我嘗試在表 tab2 中找到具有tab1.col1 = 1和最大行的對象,因此結果應該類似於對象 1

+-----------+-----------+
| ID_t1     |  col2     |
+-----------+-----------+
| 1         |  1        |
+-----------+-----------+

我試試這個:

SELECT ID_t1 FROM tab1 
     WHERE tab1.col2 = 1 and 
           ID_t1 = (SELECT ID_t1 FROM tab2 WHERE -- MAX ONE REPEATED IN THIS TABLE)

我真的很想我如何競爭這個查詢,你能幫我嗎。

你在找這個嗎:

SELECT ID_t1 
FROM tab1 
WHERE tab1.col2 = 1 AND
      ID_t1 = (SELECT ID_t1 
               FROM tab2 
               GROUP BY ID_t1 
               ORDER BY COUNT(*) DESC 
               LIMIT 1)

您可以在子查詢中使用LIMIT

select
from tabl1
where id_t1 in (
    select id_t1
    from tab2
    group by id_t1
    order by count(*) desc
    limit 1
) and col2 = 1;

嘗試這個

 select ID_t1, col2 from tab1 
 where ID_t1=1 and 
 col2=
 (
 select ID_t1 from tab2 
 group by ID_t1
 order by count(*) DESC
 limit 1
 )

我找到了我的問題的答案:

SELECT 
  tab1 as id, 
  COUNT(*) as nombre
FROM 
  tab1, tab2 
WHERE 
  tab2.ID_t1 = tab1.ID_t1 and
  tab1.col2 = 1
GROUP BY tab2.ID_t1
ORDER BY nombre desc LIMIT 1

暫無
暫無

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

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