通过在entry.id上加入下面的表格,我想从food_brands表中提取具有最高type_id的行 - 所以我应该得到下面的前3行,其中type_id为11940
food_brands
id brand type_id
15375 cesar 11940
15374 brunos 11940
15373 butchers 11940
15372 bakers 11939
15371 asda 11939
15370 aldi 11939
Run Code Online (Sandbox Code Playgroud)
类型
id type quantity food_id
11940 comm 53453 10497
11939 comm 999 10496
Run Code Online (Sandbox Code Playgroud)
食品
id frequency entry_id
10497 twice 12230
10496 twice 12230
10495 once 12230
Run Code Online (Sandbox Code Playgroud)
项
id number
12230 26
Run Code Online (Sandbox Code Playgroud)
我对查询的尝试并没有过滤掉较低的type.id记录 - 所以从food_brands下面的表记录中,我得到的是type_id 11940和11939.感谢任何帮助解决这个问题!
SELECT fb.*
FROM food_brands fb
INNER JOIN types t ON fb.type_id = t.id
INNER JOIN
(
SELECT MAX(id) AS MaxID
FROM types
GROUP BY id
) t2 ON t.food_id = t2.food_id AND t.id = t2.MaxID
INNER JOIN foods f ON t.food_id = f.id
INNER JOIN entries e ON f.entry_id = e.id
WHERE entries.id = 12230
Run Code Online (Sandbox Code Playgroud)
一个简单的子查询应该做得很好;
SELECT * FROM food_brands WHERE type_id=
(SELECT MAX(t.id) tid FROM types t
JOIN foods f ON f.id=t.food_id AND f.entry_id=12230)
Run Code Online (Sandbox Code Playgroud)
如果您只想返回类型 id 的行food_brands,max您应该能够使用:
SELECT fb.*
FROM food_brands fb
INNER JOIN
(
select max(id) id
from types
) t
on fb.type_id = t.id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17819 次 |
| 最近记录: |