2012-10-04 59 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

相關問題