我的表如下:MYSQL最大(列),其中2个表有相同的列
books:
id | abbr | volume | name |
1 | GZ | SLZT | Gazo |
...
vol1:
id | book | chapter | line
1 | GZ | 1 | "text..."
...
vol2:
id | book | chapter | line
1 | SD | 1 | "more..."
...
(表对齐在vol1.book = books.abbr,在这个例子中我只显示VOL1匹配)。
因此,要找到第1卷书的最后一章很简单。我这样做:
SELECT MAX(chapter) FROM vol1, books WHERE vol1.book=books.abbr
AND books.volume='SLZT' AND books.name ='Gazo';
它工作正常。但是,如果我想将vol2中的所有内容都包含在同一个查询中呢?
我已经试过:
Select Max(chapter) FROM vol1,vol2,books
WHERE (vol1.book=books.abbr OR vl2.book=books.abbr)
AND books.volume='SLZT' AND books.name = 'Gazo';
这当然给了我,说因为它使用了两次章是模糊的错误。
此外,我将在实际代码中的示例变量中创建值'SLZT'和'Gazo'。
所以,基本上,我希望能够输入任何书籍/卷,并找到最高章的价值,而不管它是在vol1还是vol2。
希望我已经制定了足够好的问题来提供所有需要的信息。谢谢!
编辑::
有人发表了以下的解决方案,它是接近 - 在奇怪的是,它的答案消失了!他们建议使用UNION:
SELECT MAX(chapter) FROM vol1
JOIN books ON vol1.book = books.abbr
WHERE books.volume = 'SLZT' AND books.name = 'Gazo'
UNION
SELECT MAX(chapter) FROM vol2
JOIN books ON vol2.book = books.abbr
WHERE books.volume = 'SLZT' AND books.name = 'Gazo'
这给了我(例如):
MAX(chapter)
50
NULL
但是我怎样才能得到它仅返回50值(即非空值)桌子?
任何原因,你不只是把两个在一个表中,并有一个卷列? – 2010-12-10 18:27:43