我试图通过比较两个表结果集来找到唯一值。我已经尝试了许多解决方案,例如数组合并,数组唯一,但它没有百分之百地工作。
所以要解决问题。
查询1:
SELECT field_ipe_case_numbers_value
FROM meiscontent_type_inbound_parts_entry
RIGHT JOIN meiscontent_field_ipe_case_numbers
ON meiscontent_type_inbound_parts_entry.nid = meiscontent_field_ipe_case_numbers.nid
WHERE field_ipe_invoice_number_nid =661
AND field_ipe_quality_status_value = "Usable Stock"
ORDER BY field_ipe_case_numbers_value DESC
结果集1:
10695
10694
10693
10692
10691
10690
10689
10688
10687
10686
10685
10684
10683
10682
10681
10680
10679
10678
查询2:
SELECT field_pnp_case_no_value
FROM meiscontent_type_packing_note_parts
RIGHT JOIN meiscontent_field_pnp_case_no
ON meiscontent_type_packing_note_parts.nid = meiscontent_field_pnp_case_no.nid
WHERE field_pnp_invoice_no_nid =661
ORDER BY field_pnp_case_no_value DESC
结果集2:
10695
10694
10693
10692
10691
10690
10689
10688
10687
10686
10685
10684
10682
10681
10680
10679
10678
需要的是这两个结果集的差异。应该是10683,但我得到10686。
感谢您的关注和我正在尝试各种解决方案,希望有人能够更好地了解这个问题,并提出一个可行的解决方案。我只是使用SQL语句而不是在ARRAY中获取结果并尝试按照我现在尝试的方式进行操作。
答案 0 :(得分:1)
如果您正在寻找PHP的解决方案:
array_diff ($array1 , $array2);
应该是正确的选择。
http://nz.php.net/manual/en/function.array-diff.php
HTH
答案 1 :(得分:1)
如果您尝试合并和删除两个查询的结果,那么只需执行以下操作:
SELECT DISTINCT `value` FROM (
SELECT `field_ipe_case_numbers_value` AS `value`
FROM ...
UNION
SELECT `field_...` AS `value`
FROM ...
)
答案 2 :(得分:0)
不确定您使用的是什么数据库,但您可以尝试:
(query1)EXCEPT(query2)
编辑:oops,我看到它是mysql ...你可以尝试
query1 AND NOT EXISTS(query2)
虽然您可能必须在(query2)
之后移动订单答案 3 :(得分:0)
在SQL方面,这应该有效:
SELECT field_ipe_case_numbers_value FROM <rest of first query>
EXCEPT
SELECT field_pnp_case_no_value FROM <rest of second query>
这应该返回第一组中未在第二组中找到的所有内容。 (如有必要,请撤销订单。)
答案 4 :(得分:0)
这也应该在纯SQL中解决。一个天真的方法就是:
select column from table a where column not in (select column from table b)
union
select column from table b where column not in (select column from table a)