2011-05-13 69 views
1

打扰一下,我没有用英文提出一个明确的问题。php mysql查询出所有的单词,但不重复

我需要一些像这样的mysql查询:通过两个表查询所有项目名称,UNION,但不重复。

这里是我的表结构:

表:cxt_20110105

item   | ... many columns, but does not affect query, because I just need item. 
art   | 
collectibles | 
furniture | 
books  | 
arts   | 
books  | 
... many lines... 

表:cxt_20110106

item   | ... many columns, the columns structure is as well as table: cxt_20110105. 
art   | 
tickets  | 
cars   | 
furniture | 
tickets  | 
cars   | 
... many lines... 

所以

mysql_query(//how to write in here?) 
while ($row = mysql_fetch_array($result)) 
{ 
    //the result should be: art, collectibles, furniture, books, tickets, cars(every word, but not repeat) ; 
} 

感谢。

回答

2

UNION将为您删除重复项。

SELECT item FROM cxt_20110105 
UNION 
SELECT item FROM cxt_20110106 
3
SELECT item FROM cxt_20110105 

UNION DISTINCT <---the important bit. 

SELECT item FROM cxt_20110106 
+0

从[mysql文档](http://dev.mysql.com/doc/refman/5.0/en/union.html):“UNION的默认行为是重复的行从结果中删除。可选的DISTINCT关键字除默认外没有任何作用,因为它还指定重复行删除。“ – 2011-05-13 21:01:22

+0

我更喜欢写明确的查询,以明确发生了什么。默认值是好的,但看到这样拼写出来就会让其他人更清楚。 – 2011-05-13 21:06:46

+0

正确,DISTINCT没有用。答案很简单。我没有很好地学习基础知识。谢谢。 – cj333 2011-05-13 21:07:37

0

随意删除这个帖子....我误解了什么,他问

echo mysql_field_name ($row , 0); //art 

,你可以把它贴在一个循环和退出失败(没有更多的条目)或走的$长度排

$n = count($row); 
$i=0; 
while ($i<$n) { 
    echo mysql_field_name ($row , $i); 
    $i++; 
} 

注,由mysql_fetch_array返回的数组同时返回一个数字和文本索引,$ N可能是2个你什么甲肾上腺素ed ... so $ n = int(count($ row)/ 2)

看起来我可能误解了这个问题,虽然 - 我在想他是想在中间输出字段名。然后再说一遍,在一个循环内本身就没有意义。我的歉意