Php MySQL查询,从表中选择,返回未找到的值

Php MySQL查询,从表中选择,返回未找到的值,php,mysql,Php,Mysql,我有一个问题: SELECT DISTINCT phone FROM contacts WHERE (phone='123456' OR phone='456789' OR phone='789789') AND deleted=0 AND user=1 这将显示联系人表中的所有行,并且这些行不会被删除。如何返回联系人表中未找到的值 注意:我的表中没有找到字段。这就是我想要返回的 例如: | Phone | deleted | found | |-----------

我有一个问题:

SELECT DISTINCT phone
  FROM contacts
  WHERE (phone='123456' OR phone='456789' OR phone='789789')
     AND deleted=0 AND user=1
这将显示联系人表中的所有行,并且这些行不会被删除。如何返回联系人表中未找到的值

注意:我的表中没有找到字段。这就是我想要返回的
例如:

|   Phone   | deleted | found |
|-----------|---------|-------|
|  123456   |    0    |  YES  |
|  456789   |    1    |  YES  |
|  789789   |    0    |   NO  | <---
|电话|已删除|已找到|
|-----------|---------|-------|
|123456 | 0 |是|
|456789 | 1 |是|

|789789 | 0 | NO |最简单的解决方案:在PHP上检查结果并验证手机不存在

编辑:

如果要将其作为一个查询运行,可以创建以下语句:

SELECT t.phone
FROM
(
  SELECT 123456 as phone
  UNION ALL 
  SELECT 456789 as phone
  UNION ALL 
  SELECT 789789 as phone
) as t
LEFT JOIN  contacts as c
  ON t.phone = c.phone
WHERE c.phone IS NULL
但我不确定它是否能快速工作

试试这个:

    select DISTINCT phone 
    from contacts 
    WHERE (phone='123456' OR phone='456789' OR phone='789789') 
    AND deleted = 0 
    AND user = 1
    AND found = 0
SELECT distinct phone 
FROM contacts 
WHERE phone NOT IN (123456,456789) AND
deleted = 0 AND 
user=1

在PHP中这样做不是更容易吗

// The list of phone numbers to search
$listAll = array('123456', '456789', '789789', );

// Use data from $listAll to compose this query:
$query = "
  SELECT DISTINCT phone
  FROM contacts
  WHERE phone IN ('123456', '456789', '789789')
     AND deleted=0 AND user=1
";

// Run the query, get the list of phone numbers in $listFound
// Let's suppose it produces:
//     $listFound = array('123456', '456789');

// Get the list of phone numbers that are missing from table
$listMissing = array_diff($listAll, $listFound);
试试这个:

    select DISTINCT phone 
    from contacts 
    WHERE (phone='123456' OR phone='456789' OR phone='789789') 
    AND deleted = 0 
    AND user = 1
    AND found = 0
SELECT distinct phone 
FROM contacts 
WHERE phone NOT IN (123456,456789) AND
deleted = 0 AND 
user=1

从联系人中选择不同的(电话),其中(电话='123456'或电话='456789'或电话='789789'),删除=0,找到=否,用户=1
。我想你也应该使用“found”列。我的表中没有“found”列,只是为了表明查询是否在contacts表中“123456”和“456789”在我的联系人表中,“789789”不在,但我仍希望它在查询结果中返回。您想从表中获取一些不存在的数据吗?我想从表中获取删除=0的数据,以及表中未包含的数据。请阅读@Nicos answer
我的表中没有“found”列,
所以我不知道他为什么做不到。因为
找不到
列。表中不存在第789789行。查询必须返回表中不存在的电话。请参阅我的答案以了解它对doStepozer的影响,我想我可以找到另一个基于DB的解决方案,这样我可以保存一些PHP代码。到目前为止,这是唯一的解决方案,请阅读@Nicos答案:
我的表中没有“找到”列,
。所以你的答案是不正确的。表中不存在第789789行。查询必须返回表中不存在的电话。否:)例如,您的表包含电话(123456789)。当您使用phones(123456789789)运行SELECT时,它必须返回phone 789789。您的查询对此没有帮助:)请查看我的答案以了解它必须执行的操作