我有两个表:一个名为“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"];
}
输出显示除BB
和Z1
以外的所有项目编号。如果从!
删除collected_items.item_no=wrong_collected.item_no
,输出将显示匹配的item_no为如下:
X1 X2 X13
抱歉,我对PHP并不熟悉。我已经学会了JOIN,但我从未见过如何输出无与伦比的结果的例子。请帮助!
答案 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)
希望它有意义