PHP MYSQL加入并输出无与伦比的结果

时间:2013-06-16 11:23:14

标签: php mysql database join

我有两个表:一个名为“Collected_items”,另一个名为“Wrong_Collected”。如下图所示:

**collected_items**
item_no qty
x1       10
x2       20
BB       5
Z1       20
x13      13


**wrong_collected**
item_no qty
x1      10
x2      20
x13     13

正如你所看到的,两个表上都有项目编号,但我想要的是输出在wrong_collected表中找不到的那个。

$sql = mysql_query("SELECT collected_items.item_no,wrong_collected.item_no FROM collected_items, wrong_collected WHERE collected_items.item_no!=wrong_collected.item_no");
while($data = mysql_fetch_array($sql)){
   echo $data["item_no"];
}

输出显示除BBZ1以外的所有项目编号。如果从!删除collected_items.item_no=wrong_collected.item_no,输出将显示匹配的item_no为如下:

X1 X2 X13

抱歉,我对PHP并不熟悉。我已经学会了JOIN,但我从未见过如何输出无与伦比的结果的例子。请帮助!

3 个答案:

答案 0 :(得分:0)

改变这个:

SELECT collected_items.item_no,wrong_collected.item_no FROM collected_items, wrong_collected WHERE collected_items.item_no!=wrong_collected.item_no

为:

SELECT ci.item_no FROM collected_items ci 
left join wrong_collected wc on ci.item_no=wc.item_no 
WHERE wc.item_no is null;

答案 1 :(得分:0)

使用此查询:

 select * from collected_items ci where not exists (select 1 from wrong_collected wc where ci.item_no = wc.item_no)

答案 2 :(得分:0)

以下是subquery示例,它提供了无与伦比的结果

SELECT item_no FROM collected_items WHERE item_no  NOT IN 
(SELECT item_no  FROM  wrong_collected)

希望它有意义