我有2张这样的桌子:-
Table: offers
|-------------- |
| id | OfferNum |
| 1 | a1 |
| 2 | a2 |
| 3 | a3 |
| 4 | a4 |
| 5 | a5 |
| 6 | a6 |
|---------------|
Table: colours
|------------------------------------------|
| id | OfferNum | colour | availaility |
| 1 | a1 |blue |yes |
| 2 | a1 |red |no |
| 3 | a2 |green |yes |
| 4 | a3 |white |yes |
| 5 | a3 |brown |yes |
| 6 | a3 |navy |no |
| 7 | a3 |black |yes |
| 8 | a3 |red |yes |
| 9 | a4 |yellow |no |
| 10 | a5 |black |yes |
| 11 | a6 |white |yes |
|------------------------------------------|
出于分页的目的,我需要从表“ offers”中选择3个OfferNums,从偏移量0开始,并将两个表连接起来,以便结果行将包含3个offernums(即a1,a2和a3)。依此类推..
以下脚本(LIMIT为0.3)无法产生所需的结果。
SELECT offers.OfferNum, items.colour, items.availability
FROM offers
JOIN items ON items.OfferNum = offers.OfferNum
ORDER BY offers.id ASC
LIMIT 0 , 3
仅产生联接表的前3行。像这样:-
|----------------------------|
|OfferNum|colour|availability|
|a1 |blue |yes |
|a1 |red |no |
|a2 |green |yes |
|----------------------------|
有没有办法达到预期的结果?
如果我理解正确,您想从要约表中显示3个要约,并在旁边显示第二个表中的所有等效值,那么您可以考虑选择要作为基础的数据,例如:
SELECT OfferNum
FROM offers
ORDER BY id ASC
LIMIT 0 , 3
然后从中选择并以所需的JOIN类型加入查询看起来像:
SELECT customOffers.OfferNum, items.colour, items.availability
FROM
(SELECT OfferNum
FROM offers
ORDER BY id ASC
LIMIT 0 , 3) as customOffers
JOIN items ON items.OfferNum = offers.OfferNum
在子查询中移动LIMIT子句并与之连接:
SELECT offers2.OfferNum, items.colour, items.availability
FROM (SELECT * FROM offers ORDER BY id LIMIT 0, 3) AS offers2
JOIN items ON items.OfferNum = offers2.OfferNum
ORDER BY ...
问题出在MYSQL 4.0上。
低于Mysql 4.1的版本不支持子查询subselect sql query doesn't work on mysql 4
此处有更多详细信息:http://dev.mysql.com/doc/refman/4.1/en/subqueries.html
为了快速修复,我安装了MYSQL 4.1,Irakli Gigiberia和Salman A的回复都起作用。
非常感谢您的帮助。