我正在尝试根据连接两个具有部分匹配字段的表来选择一些记录。
拿一张看起来像这样的桌子(人):
peopleID poeopleStatus BuidlingIDRoomID Sender DateTimeStamp
1 A ABQ-203 XX 2023-10-01 10:00:00
2 Q BC-203 AO 2023-01-01 11:00:00
3 N AB-201 CC 2023-02-01 12:00:00
4 B AA-111 BB 2023-03-01 13:00:00
5 B CA-111 BC 2023-03-01 14:00:00
和一张桌子(建筑位置),例如:
BuildingID Owner
AA Santa
AB Banta
BC Satan
我正在使用以下 SQL 语句:
SELECT people.*, buildings.*
FROM `people`
LEFT JOIN buildinglocations
ON LEFT(people.buildingIDRoomID, SUBSTRING_INDEX('-', people.buildingIDRoomID, 1) -1)) = buildinglocations.buildingID
WHERE `peoplestatus` = 'N' AND Sender = 'CC' AND Owner = 'Banta'
ORDER BY people.`DateTimeStamp` ASC
这可能不相关,但是,当在 php 脚本中运行相同的 sql 查询时,我在 phpmyadmin 中得到 n 条记录,并在 phpmyadmin 中得到 n+2 条记录。事实上,有 2 条记录不应该出现在 php 脚本中。在 phpmyadmin 中,我还在查询结果下方多次得到以下内容。
警告:#1292 截断不正确的 DOUBLE 值:'-'
我什至不确定上面是否是有效的 SQL 语句,所以让我们从那里开始。
蒂亚
SELECT people.*, buildinglocations.Owner
FROM people
LEFT JOIN buildinglocations ON LEFT(people.BuidlingIDRoomID, 2) = buildinglocations.BuildingID
WHERE people.peopleStatus = 'N' AND people.Sender = 'CC' AND buildinglocations.Owner = 'Banta'
ORDER BY people.DateTimeStamp ASC;