[英]MySQL Inner Join With LIMIT to left table
我有這個數據庫查詢
SELECT *
FROM (`metadata` im)
INNER JOIN `content` ic ON `im`.`rev_id` = `ic`.`rev_id`
WHERE `im`.`id` = '00039'
AND `current_revision` = 1
ORDER BY `timestamp` DESC
LIMIT 5, 5
查詢將結果中的總行數限制為5.我希望將左表metadata
限制為5,而不限制整個結果集。
我該如何編寫查詢?
如果你考慮一下你想要做什么,你實際上並沒有對metadata
進行選擇。
您需要先查詢該子查詢。
嘗試:
SELECT *
FROM ((select * from metadata limit 5) im)
INNER JOIN `content` ic ON `im`.`rev_id` = `ic`.`rev_id`
WHERE `im`.`id` = '00039'
AND `current_revision` = 1
ORDER BY `timestamp` DESC
這是另一種可能的方法:
SET @serial=0;
SET @thisid=0;
SELECT
@serial := IF((@thisid != im.id), @serial + 1, @serial),
@thisid := im.id,
*
FROM (`metadata` im)
WHERE `im`.`id` = '00039'
AND `current_revision` = 1
AND @serial < 5
ORDER BY `timestamp` DESC
這沒有經過測試。 如果您遇到問題,請告訴我 - 我可以詳細說明。
好吧,我認為你的意思是LEFT JOIN
嘗試使用LEFT JOIN
而不是INNER JOIN
SELECT DISTINCT *
FROM (`metadata` im)
INNER JOIN `content` ic ON `im`.`rev_id` = `ic`.`rev_id`
WHERE `im`.`id` = '00039'
AND `current_revision` = 1
ORDER BY `timestamp` DESC
LIMIT 5, 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.