PhP MySQL NOT LIKE 不 return 正确的值
PhP MySQL NOT LIKE does not return the correct value
我正在尝试使用 LIKE
和 NOT LIKE
在 PHP 和 MySQL 中查询结果。
我有一个包含 2 列的 table BeaconEvent
:BeaconID
和 EventID
;
Table BeaconEvent:
BeaconID EventID
-------------------------
5DBA-BC5B Time0003
5DBA-BC5B NLB0001
5264-9028 NLB0004
1F8B-35E6 NLB0005
当我 运行 对 select 所有 BeaconID
和 EventID
的 MySQL 命令是一个特定值时,查询工作正常但是当我 运行 select BeaconID
与 EventID
的查询不等于指定值,它 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";
输出:
╔═══════════╗
║ 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')
输出:
╔═══════════╗
║ BeaconID ║
╠═══════════╣
║ 5264-9028 ║
║ 1F8B-35E6 ║
╚═══════════╝
我正在尝试使用 LIKE
和 NOT LIKE
在 PHP 和 MySQL 中查询结果。
我有一个包含 2 列的 table BeaconEvent
:BeaconID
和 EventID
;
Table BeaconEvent:
BeaconID EventID
-------------------------
5DBA-BC5B Time0003
5DBA-BC5B NLB0001
5264-9028 NLB0004
1F8B-35E6 NLB0005
当我 运行 对 select 所有 BeaconID
和 EventID
的 MySQL 命令是一个特定值时,查询工作正常但是当我 运行 select BeaconID
与 EventID
的查询不等于指定值,它 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";
输出:
╔═══════════╗
║ 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')
输出:
╔═══════════╗
║ BeaconID ║
╠═══════════╣
║ 5264-9028 ║
║ 1F8B-35E6 ║
╚═══════════╝