繁体   English   中英

我有两个表,如何将一个表按另一列按列分组,然后按大小对分组进行排序?

[英]I have two tables, how can I group one tables by a column in the other, and then sort the groupings by size?

我有一个看起来像这样的表:

table name: uno
str_id | title
----------
 "a1"  | "hi"
 "b2"  | "bye"
 "c3"  | "etc."

table name: dos
str_id | other_col_name
-------------------------
   "b2"  |  1
   "b2"  |  5
   "a1"  |  6
   "b2"  |  7

我希望查询查看uno.str_id中的值,然后找出dos.str_id中具有dos.str_id 我想我需要在str_id上加入它们,然后按计数排序,但是我不确定如何在SQL语法中执行此操作。 感谢您的时间和帮助。

SELECT u.str_id FROM uno u
INNER JOIN dos d ON d.str_id = u.str_id
GROUP BY u.str_id
ORDER BY COUNT(*) DESC;

编辑

必须将可能的WHERE部分放在JOIN部分之后(SQL语法)。

如果要查询具有“相同名称”字段的两个表,并且对这些公共字段执行任何操作,则必须使用别名(或完整的表名)。 在该查询中,表uno的别名为“ u”,表dos的别名为“ d”。 这意味着,如果您在uno和dos中都具有字段标题,则必须编写u.title才能对uno.title进行查询

具有别名的版本:

SELECT u.str_id FROM uno u
INNER JOIN dos d ON d.str_id = u.str_id
GROUP BY u.str_id
WHERE u.title = 'bla blabla'
AND d.title IN ('asdf', 'ersg')
ORDER BY COUNT(*) DESC;

没有别名的版本(完整的表名,以避免混淆DBMS)

SELECT uno.str_id FROM uno 
INNER JOIN dos  ON dos.str_id = unon.str_id
GROUP BY uno.str_id
WHERE uno.title = 'bla bla bla'
AND dos.title IN ('asdf', 'ersg')
ORDER BY COUNT(*) DESC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM