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。您的查询对此没有帮助:)请查看我的答案以了解它必须执行的操作