2016-05-12 155 views
0

我发布这个问题,因为我确实设法找到a similar question,但他们没有使用别名。Mysql从一个表中选择所有,并从另一个表中选择一些使用别名

我有两张桌子 - 我想抓住table1的一切,只需从table2处抓住user_nameTeam

我原来的查询被抓从table2

SELECT * 
FROM qabin.allqas t1 
JOIN login.users t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

一切的一切都很好,并能正常工作,但我想只得到user_nameTeam

为了让事情更有趣,他们在不同的数据库中,但它不是一个问题。

一个在qabin数据库中,另一个在login数据库中。

我曾尝试:

SELECT 
    qabin.allqas.* AS t1, 
    login.users.Team, 
    login.users.user_name 
JOIN login.users t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

我需要的T1和T2的别名,因为他们正在为建设一个更大的查询字符串别处使用。

在此先感谢!

+0

既然你指出出于另一个问题它是有用的知道你可以按照这个答案,只替换表名别名 – dan08

+0

我试图避免这一点,因为有很多,使用这些别名的代码行。 – user1274820

回答

1

为什么不使用子查询?

SELECT * 
FROM qabin.allqas t1 
JOIN (SELECT user_name, Team FROM login.users) t2 
ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 
+0

真棒,非常快的答案,它的作品:)另外,TIL什么子查询。 – user1274820

+0

这是一种迂回的方式来完成更简单的事情。 – dan08

+1

他说他以后在一个大型查询中使用这个别名。如果由于某种原因,他希望只有这两个字段可用于此别名,这就是你如何做到的。 – rgvassar

1

您不能使用一个别名(t1)作为一组列。我猜你正在寻找的是这样的:。

SELECT t1.*, t2.team, t2.user_name 
FROM qabin.allqas t1 
JOIN login.users t2 
    ON (t1.Submitter = t2.user_name) 
WHERE t1.Status='Complete' 

我会建议使用从T1代替T1的字段名*

+0

我基于发送的一堆参数构建一个字符串,因此让我解释它的用途。基本上,后来出现的另一个字符串是:'$ queryString。=“AND t1.DateCompleted BETWEEN'$ startDate'AND'$ endDate'”;'我希望避免不得不重写一堆以后的代码 – user1274820

+0

我比较新但是请放心,我正在逃避所有的帖子数据 – user1274820

1

尝试此查询:

SELECT t1.*, t2.user_name, t2.Team 
FROM qabin.allqas t1 
JOIN login.users t2 
ON t1.Submitter 1= t2.user_name 
WHERE t1.Status='Complete' 
相关问题