2015-01-03 70 views
-3

我需要从它的第一个字母中得到两个表的查询。SQL:从两个表中选择第一个字母的行

从搜索,我得到了下面的查询:

SELECT substr(latin_name, 1, 1) AS alpha 
FROM singers 
GROUP BY substr(latin_name, 1, 1) 
LIMIT 0 , 30 

,现在我需要将它与命名groups

我如何通过一个查询收集两个不同的表的所有首字母另一台上混和?

+0

UNION ALL ........ ... –

+1

为什么这么多人不断标记'mysql'和'sql-server'?有人甚至读过他们选择的标签的弹出窗口吗? –

+0

@AaronBertrand因为大多数人谁知道SQL服务器也知道MySQL,只是标签,以找到更多的结果从更多的人工智能。如果它让你感到不安,那就是了。 –

回答

1

使用UNION语法:http://dev.mysql.com/doc/refman/5.0/en/union.html

这是我会怎么做:

SELECT LOWER(LEFT(`latin_name`, 1)) 
FROM `singers` 
UNION 
SELECT LOWER(LEFT(`latin_name`, 1)) 
FROM `groups` 
ORDER BY 1 ASC 
+0

更正,谢谢。我总是用括号括起来,但这种方式更好。 –

+0

@a_horse_with_no_name true,官方手册说:“UNION的默认行为是将重复的行从结果中删除。可选的DISTINCT关键字除缺省值外没有其他作用,因为它还指定删除重复行。” –

1

因此使用UNION语句:

SELECT ... FROM table1 
UNION 
SELECT ... FROM table2