SQL-如何从两个表中按日期排序?
我会尽量问清楚我的问题 我有三个表,每个表都包含一个日期值。节点和产品具有创建日期,共享具有时间戳日期。我需要弄清楚如何在一个日期前订购。。。我需要把两个日期合并在一起 它需要符合这个声明SQL-如何从两个表中按日期排序?,sql,date,sql-order-by,Sql,Date,Sql Order By,我会尽量问清楚我的问题 我有三个表,每个表都包含一个日期值。节点和产品具有创建日期,共享具有时间戳日期。我需要弄清楚如何在一个日期前订购。。。我需要把两个日期合并在一起 它需要符合这个声明 SELECT sc.auto_id AS autoid, sc.uid AS sharedby, n.nid, sc.message AS sharedmessage, ( SELECT COUNT(1) FROM {share_content} AS sc2 WHERE sc2.nid =
SELECT sc.auto_id AS autoid, sc.uid AS sharedby, n.nid, sc.message AS sharedmessage,
(
SELECT COUNT(1)
FROM {share_content} AS sc2
WHERE sc2.nid = sc.nid
) AS countnid
FROM {node} n LEFT JOIN {content_type_product} p on n.nid = p.nid
LEFT JOIN {share_content} sc on sc.auto_id=
(
SELECT MAX(auto_id) FROM share_content sc1
WHERE sc1.nid = n.nid
LIMIT 1
)
WHERE (
n.type = 'blog'
OR n.type = 'field_school'
OR n.type = 'photo_gallery'
OR n.type = 'forum'
OR n.type = 'product_review'
OR n.type = 'product' and p.field_front_page_value = 'Add to feed'
OR n.type = 'reference'
OR n.type = 'video_gallery'
OR n.type = 'video'
OR n.type = 'groups'
OR n.type = 'group_post'
OR n.type = 'status'
OR (n.type = 'event' AND n.uid != '2')
OR n.type = 'jobs_careers'
OR n.type = 'post_link'
OR (n.type = 'news_article' AND n.uid != '2' AND n.uid != '0'))
AND n.status = '1'
ORDER BY n.created DESC";
订单需要是n.created、p.created和sc.date\u shared之间的合并
谢谢,
马特太可怕了
ORDER BY
(CASE WHEN Table2.Id IS NULL AND Table3.Id IS NULL THEN Table1.Created_on
WHEN Table2.Is IS NULL
THEN (CASE WHEN Table1.CreatedOn <= Table3.CreatedOn THEN Table1.CreatedOn
ELSE Table3.CreatedOn END)
WHEN Table3.Id IS NULL
THEN (CASE WHEN Table1.CreatedOn <= Table2.timestamp THEN Table1.CreatedOn
ELSE Table2.timestamp END)
WHEN Table1.CreatedOn <= Table3.CreatedOn AND Table1.CreatedOn <= Table2.timestamp
THEN Table1.CreatedOn
WHEN Table3.CreatedOn <= Table1.CreatedOn AND Table3.CreatedOn <= Table2.timestamp
THEN Table3.CreatedOn
ELSE Table2.timestamp END)
使用SELECT AS为查询重命名第三个表中的列btw,该查询将执行得非常糟糕-它使用一个相关的聚合子查询。ie对表1、表2和表3的每个组合都进行了大量查询!对于大量行,它可能永远不会返回。我想你应该放弃这个查询,重新考虑你是在使用MS SQL Server还是其他引擎?MS SQL中的时间戳数据类型与任何日历或时钟都没有直接关系-它用于行版本控制。请摆脱{table1}1之类的东西-这些糟糕的名称选择使您的问题很难理解,也很烦人。请使用一些有意义的,实际有意义的或至少容易理解的别名。它使你的问题更容易阅读,因此会提高你快速得到答案的机会波希米亚人-我遗漏了一些东西。。。试图让它更容易看-也许没有帮助。。。但查询是有效的。我运行一个社区墙,发布持续的用户内容。。只是想让这里更容易看。