![](/img/trans.png)
[英]Condition query result limit based on table data in sequelize and mysql
[英]Is there a way to limit a query based on the result of another in mySQL?
所以我有一個正在使用的查詢,但我想在我的第二個查詢的限制中使用第一個查詢的計數,這可能嗎? 例如
SELECT
Round(0.07 * Count(*), 0) AS number_required
FROM trinkets t
LEFT JOIN orders o
ON p.order_id = o.id
WHERE o.trinket_id IN ( 27 )
AND t.valid_from >= '2022-01-01'
AND t.valid_from <= '2022-01-31'
所以我在第一個查詢中得到一個數字,我想像這樣使用它。
SELECT
Rand() AS 'random',
t.order_id,
t.serial_number,
t.valid_from,
t.valid_till AS 'valid_to',
comp.org_name AS 'subject_org',
FROM
trinkets t
LEFT JOIN orders o ON t.order_id = o.id
LEFT JOIN companies comp ON o.company_id = comp.id
WHERE
t.valid_from >= '2022-01-01'
AND (
o.status = 3
AND o.reason IN (6, 11)
)
AND o.trinket_id = 27
ORDER BY
random ASC
limit number_required
https://dev.mysql.com/doc/refman/8.0/en/select.html
- 在准備好的語句中,可以使用?指定 LIMIT 參數? 占位符標記。
- 在存儲的程序中,可以使用整數值的例程參數或局部變量來指定 LIMIT 參數。
所以你不能使用表達式或子查詢或類似的東西。
您可以運行第一個查詢,將結果提取到一個變量中,然后在第二個查詢中使用該變量。
您可以將其設為變量並在第二段代碼中使用它:
SET @number_required = (SELECT ROUND(0.07 * COUNT(*), 0) AS number_required
FROM trinkets t
LEFT JOIN orders o ON p.order_id = o.id
WHERE o.trinket_id IN ( 27 )
AND t.valid_from >= '2022-01-01'
AND t.valid_from <= '2022-01-31')
注意:將其稱為@number_required
而不是number_required
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.