在内连接MySql上使用“order by”?

时间:2011-06-02 17:15:35

标签: php mysql

你好世界各地的主人,我在这里再次遇到一个问题:D

现在我想问一些简单的东西,但我真的是编程和sql的新手,所以需要更多的学习。

好吧,让我们来解决问题吧。我有一些像这样的SQL查询

SELECT
eu_product.*,
eu_shop_display.display_name as dname,
eu_product_img.image_url as img
FROM eu_product
INNER JOIN eu_product_img on eu_product_img.product_id = eu_product.product_id
INNER JOIN eu_shop_display on eu_shop_display.display_id = eu_product.product_display
where eu_product.publish=1
and eu_product.shop_id=1
and eu_product.product_display IN (select display_id from eu_shop_display where parent_id=1) 
or eu_product.product_display = 1
GROUP BY eu_product.product_id 
ORDER BY eu_product.product_id DESC  LIMIT 0, 10

问题在于

  

INNER JOIN eu_product_img on   eu_product_img.product_id =   eu_product.product_id

这样的表格

enter image description here

我需要在字段“列表”上使用订单ASC。

是SQL查询可以使用两个顺序,还是可以通过内连接添加顺序?我尝试添加

ORDER BY eu_product.product_id DESC, eu_product_img.listing ASC

但它不起作用:(

也许有人可以解释它的工作原理。


更新

  

&LT。也许我会做简单的查询

此产品表

enter image description here

此product_img表

enter image description here

这是一个结果

enter image description here

但“eu_product_img.listing ASC”未正确运行:(

我需要在product_id 1上的列表是1而不是4

见表product_img

我需要在加入之前先运行product_img.listing命令ASC。

正确的查询就像这样

SELECT eu_product.product_id, 
(select img.listing from eu_product_img as img where img.product_id = eu_product.product_id order by img.listing ASC limit 1 ) as listing 
    FROM eu_product 
    where eu_product.shop_id=1 
    or eu_product.product_display = 2 
    GROUP BY eu_product.product_id 
    ORDER BY eu_product.product_id DESC  LIMIT 0, 20

所以它不能使用内连接?

之前感谢。

方面, Stecy

1 个答案:

答案 0 :(得分:1)

它正在发挥作用。您可以从屏幕截图中看到,它们首先按product_id排序,然后按列表排序。如果您只想通过列表进行订购,请执行ORDER BY eu_product_img.listing ASC。如果您想通过列出产品进行订购,请按报表撤消订单。

Order by接受多个语句,但您的结果将按照您指定订单语句的顺序排序;)因此,如果列表是第一个,则结果按列表排序等等。