Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL限制&;按交叉联接排序_Mysql_Sql_Join - Fatal编程技术网

Mysql SQL限制&;按交叉联接排序

Mysql SQL限制&;按交叉联接排序,mysql,sql,join,Mysql,Sql,Join,我存储推特、推特用户,并将推特用户分组 我有以下4张桌子 推特: tweet_id | user_id | created ------------------------------- 23452345 | 2345 | 2013-08-12 23456094 | 1234 | 2014-03-24 23097777 | 1234 | 2014-04-12 23948798 | 9999 | 2013-09-22 推特用户: user_id | screen_name

我存储推特、推特用户,并将推特用户分组

我有以下4张桌子

推特:

tweet_id | user_id | created
-------------------------------
23452345 | 2345    | 2013-08-12
23456094 | 1234    | 2014-03-24
23097777 | 1234    | 2014-04-12
23948798 | 9999    | 2013-09-22
推特用户:

user_id | screen_name
------------------------
2345    | michael
1234    | david
9999    | not_interested
推特社交网站:

user_id | social_id
---------------------------
2345    | 34
9999    | 20
1234    | 80
社会福利类别:

social_id | category_id
-----------------------
34        | 3
20        | 6
80        | 3
我想看到在某个社交类别中出现的每个用户最早的推文。 我编写的以下SQL似乎不起作用。我每个
twitter\u用户都有一行,但是我没有看到最早的tweet

SELECT tu.screen_name as Handle, tw.created_at as Earliest
FROM twitter_users tu
    LEFT JOIN tweets tw
        ON tu.user_id = tw.user_id
    LEFT JOIN twitter_social ts
        ON ts.user_id = tu.user_id
    LEFT JOIN social_categories cs
        ON ts.social_id = cs.social_id
WHERE cs.category_id=3
GROUP BY Handle
ORDER BY Earliest ASC
编辑 我希望有如下结果

Handle  | Earliest
---------------------
david   | 2014-03-24
michael | 2013-08-12

如果你想要最早的,它不是ASC(升序)

它应该是DESC(降序)

试试这个

SELECT tu.screen_name as Handle, min(tw.created_at) as Earliest
FROM twitter_users tu
    LEFT JOIN tweets tw
        ON tu.user_id = tw.user_id
    LEFT JOIN twitter_social ts
        ON ts.user_id = tu.user_id
    LEFT JOIN social_categories cs
        ON ts.social_id = cs.social_id
WHERE cs.category_id=3
GROUP BY tu.screen_name
ORDER BY Earliest ASC

尽可能早地尝试
MIN(tw.created_at)
是的,这样做了@AbhikChakraborty谢谢。我原以为MIN在查询中太晚了,但它起作用了!这应该是一个评论,而不是一个答案。我的意思是最早的,而不是最近的。
ORDER BY Earliest DESC
SELECT tu.screen_name as Handle
    ,MIN(tw.created_at) as Earliest
FROM twitter_users tu
LEFT JOIN tweets tw
    ON tu.user_id = tw.user_id
LEFT JOIN twitter_social ts
    ON ts.user_id = tu.user_id
LEFT JOIN social_categories cs
    ON ts.social_id = cs.social_id
WHERE cs.category_id=3
GROUP BY tu.screen_name
ORDER BY Earliest ASC
SELECT tu.screen_name as Handle, tw.created_at as Earliest
FROM twitter_users tu
LEFT JOIN tweets tw
    ON tu.user_id = tw.user_id
LEFT JOIN twitter_social ts
    ON ts.user_id = tu.user_id
LEFT JOIN social_categories cs
    ON ts.social_id = cs.social_id
WHERE cs.category_id=3
GROUP BY Handle
ORDER BY Earliest DESC
LIMIT 1
SELECT tu.screen_name as Handle, min(tw.created_at) as Earliest
FROM twitter_users tu
    LEFT JOIN tweets tw
        ON tu.user_id = tw.user_id
    LEFT JOIN twitter_social ts
        ON ts.user_id = tu.user_id
    LEFT JOIN social_categories cs
        ON ts.social_id = cs.social_id
WHERE cs.category_id=3
GROUP BY tu.screen_name
ORDER BY Earliest ASC