[英]subquery that uses a value from the outer query in the where caluse
我想運行一個子查詢,該子查詢在其where子句中使用外部查詢的值。 這是我想做的事情的例子:
SELECT * FROM `tbl1`
WHERE `tbl1`.`max_count` < (
SELECT COUNT(*) rc FROM `tbl2`
WHERE `tbl2`.`id` = `tbl1`.`id
)
有一個名為max_count的列的tbl1,並且tbl2的行指向tbl1中的一行(多對一關系)。 我想要做的是在tbl1中選擇行,其中引用它的tbl2中的行數小於該行的max_count值。 但我很確定我在這里寫的東西不會削減它。 有任何想法嗎?
非常感謝
嘗試使用JOIN
。
SELECT DISTINCT a.*
FROM tb1 a
INNER JOIN
(
SELECT id, COUNT(*) totalCount
FROM tbl2
GROUP BY id
) b ON a.ID = b.ID
WHERE a.max_count < b.totalCount
嘗試這個 -
SELECT * FROM `tbl1` t1
WHERE t1.`max_count` < (
SELECT COUNT(*) FROM `tbl2` t2
WHERE t2.`id` = t1.`id`
)
作為一種替代解決方案,使用HAVING
的LEFT JOIN
比使用子查詢更容易;
SELECT tbl1.*, COUNT(tbl2.id) current_count
FROM tbl1
LEFT JOIN tbl2
ON tbl1.id=tbl2.id
GROUP BY tbl1.id
HAVING COUNT(tbl2.id) < max_count
請注意,在這種情況下GROUP BY
只是MySQL的東西,通常你需要在tbl1中的每個選定字段GROUP BY
,即使已知tbl1.id是每行唯一的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.