2012-10-04 38 views
-1

表一:选择其中来自一个值是在表B的MySQL

field1 field2 
x1  x1 

表B:

field 1 
x1 

如何将选择上表b,其中FIELD1 =到外地1表a的?

如果什么表B的名称是表中的字段1的,什么是执行连接作为选择的表是a.field1

这是我使用的实际查询语法:

mysql_query("SELECT * FROM tags WHERE id3='$value' AND flag!='w' AND visibility='t' JOIN tags.albumid WHERE photoid=tags.photoid AND visibility!='d' ORDER BY datetimep DESC LIMIT 200"); 
+1

这是一个非常基本的问题。我建议你阅读一个SQL教程。 –

+0

[左连接变成内连接]的可能重复(http://stackoverflow.com/questions/3256304/left-join-turns-int-inner-join) –

回答

2

根据你的任务是多么复杂,你可以简单地连接具有相同值的行:

Select * from a, b where a.field1 = b.field2 

或使用加入:

select a.* 
from Tableb b 
join Tablea a 
on a.field1=b.field1 

在,如果你想避免含有相同的数据

至于加入多行,你可能有使用Distinct关键字再次过滤第一种情况下,也有不同的类型。看到eggyal的链接。

0
select a.* 
from Tableb b 
join Tablea a 
on a.field1=b.field1 
0

假设字段名的加入是相同的两个表中:

SELECT fieldx, fieldy FROM table_1 NATURAL JOIN table_b 

如果加入的字段名是不相同的 - 或你想成为明确的,因为你可能有其他同名的字段名 - 你必须通过JOIN .. ONJOIN .. USING指令来指定这些。

+0

假设不仅连接列名称相同,而且此外,没有其他名称相同的列。这是很危险的,因为如果将来的模式发生变化,它可能会意外中断。最好更明确。 – eggyal

+0

这当然是正确的,尽管在大多数情况下,NATURAL JOIN是一个非常自然的捷径。 – ch3ka

0
select a.field1, a.field2 from table a, table b 
where a.field1=b.field1; 
0
select * from table_a join table_b 
USING (field1) 

请参阅本:MySql Join

相关问题