PhP MySQL NOT LIKE 不 return 正确的值

PhP MySQL NOT LIKE does not return the correct value

我正在尝试使用 LIKENOT LIKE 在 PHP 和 MySQL 中查询结果。

我有一个包含 2 列的 table BeaconEventBeaconIDEventID

Table BeaconEvent:

BeaconID        EventID
-------------------------
5DBA-BC5B       Time0003
5DBA-BC5B       NLB0001
5264-9028       NLB0004
1F8B-35E6       NLB0005

当我 运行 对 select 所有 BeaconIDEventID 的 MySQL 命令是一个特定值时,查询工作正常但是当我 运行 select BeaconIDEventID 的查询不等于指定值,它 return 所有 BeaconID (这是不对的,应该排除 EventID 等于特定值的 BeaconID

有效的示例查询:

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.EventID = "Time0003"

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.EventID LIKE "Time0003"

并且这些查询不起作用:

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.EventID != "Time0003"

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.EventID <> "Time0003"

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.EventID NOT LIKE "Time0003"

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.EventID NOT LIKE "%Time0003%"

有什么建议可以比较不等于特定值的值吗?提前致谢

您的数据有两个相同的 BeaconID 值:

BeaconID        EventID
5DBA-BC5B       Time0003       
5DBA-BC5B       NLB0001   

您的查询完美无缺:

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.EventID <> "Time0003";

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.EventID = "Time0003";

SqlFiddleDemo

输出:

╔═══════════╗
║ BeaconID  ║
╠═══════════╣
║ 5DBA-BC5B ║
║ 5264-9028 ║
║ 1F8B-35E6 ║
╚═══════════╝

╔═══════════╗
║ BeaconID  ║
╠═══════════╣
║ 5DBA-BC5B ║
╚═══════════╝

如果你想排除它(并且你确定你的数据是正确的)你可以使用:

SELECT BeaconEvent.BeaconID 
FROM BeaconEvent 
WHERE BeaconEvent.BeaconID <> (SELECT BeaconID 
                               FROM BeaconEvent
                               WHERE EventID = 'Time0003')

SqlFiddleDemo2

输出:

╔═══════════╗
║ BeaconID  ║
╠═══════════╣
║ 5264-9028 ║
║ 1F8B-35E6 ║
╚═══════════╝