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”中删除“fruit”中具有“1”和“color”中具有“2”、“3”的所有内容。

但我只想删除两列相等的车道。在此示例中,应从“fruits_list”中仅删除 2 条车道,结果应如下所示:

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

所以问题是,我应该在我的查询中改变什么?我希望我自己说得足够清楚,以便您理解。

编辑:

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

bonCodigo - 两者都是整数。

4

2 回答 2

1

理想情况下,您会使用 SQLMINUS集合运算符,但 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
于 2012-12-03T18:53:28.890 回答
1

尝试使用分隔符连接两列,然后进行如下比较:

     SELECT * FROM fruits_list, fruits_have 
     WHERE CONCAT_WS('@',fruits_list.fruit, fruits_list.color) !=  
               CONCAT_WS('@',fruits_have.fruit, fruits_have.color)
于 2012-12-03T18:57:18.407 回答