有更好的方法吗? PHP中有一个函数吗?
$a = array(1, 2, 3, 4, 5, 6);
$b = array(1, 2, 8, 9, 10, 3, 20);
$c = array_merge($a, $b);
$c = array_unique($c);
结果:1,2,3,4,5,6,8,9,10,20
或者在MySQL中有什么方法可以做到这一点?在以下情况下:
$a = getMySQLArray("SELECT id FROM table1 WHERE ...")
$b = getMySQLArray("SELECT id FROM table2 WHERE ...")
我需要做两个步骤(两个SELECT)来获取我需要的所有ID,但有时两个数组都可以包含相同的id,所以我需要过滤它。我不太擅长使用SQL来创建更复杂的SQL请求。可以创建这样的东西吗?
答案 0 :(得分:1)
您可以使用单个查询通过UNION获取这些不同的值:
SELECT
id
FROM table1 WHERE ...
UNION
SELECT
id
FROM table2 WHERE ...
没有关键字UNION
的 ALL
只返回不同的行,在您的情况下为不同的值。
SELECT ...
UNION [ALL | DISTINCT] SELECT ...
[UNION [ALL | DISTINCT] SELECT ...]
UNION用于组合多个SELECT语句的结果 到一个结果集。 ...
UNION的默认行为是从结果中删除重复的行。