与子字符串连接

问题描述 投票:0回答:1

我正在尝试根据连接两个具有部分匹配字段的表来选择一些记录。

拿一张看起来像这样的桌子(人):

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 语句,所以让我们从那里开始。

蒂亚

sql join substring
1个回答
0
投票
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;
© www.soinside.com 2019 - 2024. All rights reserved.