MYSQL联接两个表(+限制基于第一个表)

问题描述 投票:0回答:3

我有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         |
|----------------------------|

有没有办法达到预期的结果?

mysql join limit
3个回答
1
投票

如果我理解正确,您想从要约表中显示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

0
投票

在子查询中移动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 ...

0
投票

问题出在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的回复都起作用。

非常感谢您的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.