2012-12-03 47 views
1

我在这里遇到问题,我无法理解这个问题。 所以这里的交易:从第一个表格中选择数据并与第二个表格进行比较

$q= mysql_query("SELECT * FROM fruits_list, fruits_have WHERE fruits_list.fruit != fruit_have.fruit AND fruit_list.color != fruit_have.color"); 

表:

fruits_list 
- fruit --- color - 
- 1 -  2 - 
- 2 -  3 - 
- 1 -  3 - 
- 1 -  4 - 
--------------------- 

fruits_have 
- fruit --- color - 
- 1 --- 2 - 
- 1 --- 3 - 
------------------- 

所以现在这个查询将从 “fruits_list”,在 “水果” 有 “1” 和 “2” 删除一切, “3”彩色”。

但我只想删除两列均等的车道。在这个例子中,只有2个车道应该从“fruits_list”和结局除去应该是这样的:

fruits_dont_have 
- fruit --- color - 
- 2 - 3 - 
- 1 - 4 - 
------------------- 

所以,问题是,我应该在我的查询变化? 我希望我自己清楚了解你的理解。

编辑:

瑞恩E - 简单地从结果中删除。

bonCodigo - 都是int。

+0

删除如DELETE FROM或干脆从输出中删除? – CodeMonkey

+0

你的table2没有col1! –

+0

他们是由一个ID或东西链接? – Marc

回答

1

理想情况下,您将使用SQL MINUS集合运算符,但MySQL尚不支持此操作符。

你应该能够通过左为此一起进行WHERE过滤掉的比赛虽然不是:

SELECT fl.* 
FROM fruits_list fl 
LEFT JOIN fruits_have fh 
    ON fl.fruit = fh.fruit AND fl.color = fh.color 
WHERE fh.fruit IS NULL 
+0

正常工作。非常感谢你。 并且感谢您使用简短的表名称的这个小技巧,不知道它。 – Wickd

1

尝试串联的两列枝条分离,然后比较如下:

 SELECT * FROM fruits_list, fruits_have 
    WHERE CONCAT_WS('@',fruits_list.fruit, fruits_list.color) != 
       CONCAT_WS('@',fruits_have.fruit, fruits_have.color) 
相关问题