考虑我有两个表tab1
和tab2
:
+-----------+-----------+
| 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)
我真的堆叠如何与这个查询竞争,你能帮我吗。
答案 0 :(得分:1)
你在找这个:
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)
答案 1 :(得分: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;
答案 2 :(得分: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
)
答案 3 :(得分:0)
我找到了一个问题的答案:
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