MySQL按另一个表数据排序

时间:2014-12-23 12:19:38

标签: php mysql

我很难理解如何按来自另一个表格的数据订购查询。

现有查询为:SELECT ID FROM UserTour WHERE Live = 1 ORDER BY LastUpdated DESC

这显然是通过专栏' LastUpdated'在表格' UserTour'

但是,我需要按照“LastUpdated'这是在另一个表格中#ImageLinks',Where' TypeID' = 16(再次在' ImageLinks')。

我希望这是有道理的。

所以它会像:$ids = @mysql_values('SELECT ID FROM UserTour WHERE Live = 1 ORDER BY ('Select ID FROM 'ImageLinks' Where TypeID = 16 Order by LastUpdated DESC')');

任何帮助将不胜感激如何做到这一点。干杯

1 个答案:

答案 0 :(得分:0)

如果两个表之间没有任何关系,您的问题中的查询将如下所示

select id from
(
   SELECT 
        ID 
     , (Select ID FROM ImageLinks Where TypeID = 16 
        Order by LastUpdated DESC limit 1) as order_val
   FROM UserTour 
   WHERE Live = 1 
) x
ORDER BY x.order_val

哪个有效,但不会有任何排序,因为order_val列会有固定值。

如果ID以1:1的比例链接(没有任何迹象表明它们是,但只是假设')我们可以这样做:

select u.id 
from UserTour u inner join ImageLinks i on u.ID = i.ID
where u.Live = 1 and i.TypeID = 16
order by i.LastUpdated desc

如果上述内容不正确,则必须确定两个表的关联方式并相应加入。

换句话说 ,如果表格没有连接,那么您就无法根据表格中的列提供一个表格的数据排序其他

<强>更新

select
     i.LinkID
   , i.LastUpdated 
from UserTour u inner join ImageLinks i 
on u.ID = i.LinkID 
where u.Live = 1 and i.TypeID = 16 
group by i.LinkID, i.LastUpdated
order by i.LastUpdated desc LIMIT 30