2010-02-06 105 views
3
bins 
---- 
id  min  max 
1  1  20 
2  21  40 
3  41  60 

pictures 
-------- 
id 
3 
11 
59 

基本上,我想选择最高图片ID,然后从bin表中选择它匹配的bin id。例如,对于pictures.id = 59(最高),我想bins.id = 3。任何人都可以帮助我这样的查询?类似于简单的MySQL查询问题

SELECT bins.id AS id 
FROM bins 
    JOIN pictures.id 
    ON bins.min < MAX(pictures.id) 
     AND bins.max > MAX(pictures.id) 

似乎不起作用。谢谢!

回答

2
SELECT id 
FROM bins 
WHERE min < (Select Max(id) from Pictures) 
    AND max > (Select Max(id) from Pictures) 

希望它可以帮助

最大

+1

MySQL是否需要ANY关键字?因为子查询只会返回一个值,所以在这里,任何,所有,某些或任何东西都不应该表示同样的东西,不是吗? – ErikE 2010-02-06 01:10:00

+0

你说得对。我现在编辑了答案。谢谢 – 2010-02-06 01:23:56

1

试试这个

Select id From Bins 
    Where (Select Max(id) From pictures) 
     Between Min and Max 
0

如果仓限额(bin.min和bin.max)ID为提高作为样本数据,那么'max'图片ID的bin ID可以使用以下获得:

SELECT MAX(bins.id) 
FROM bins 
JOIN pictures 
ON  bins.min <= pictures.id 
AND bins.max >= pictures.id 

请注意<==>的使用 - 否则会极大地排除箱极限值(例如, picture.id = 41不会匹配bin)。

也可以写成:

SELECT MAX(bins.id) 
FROM bins 
JOIN pictures 
ON  pictures.id BETWEEN bins.min AND bins.max 

将打破如果你的bin限额不与仓编号的顺序排列。