Mysql 从同一表格的两行中选择数据
我有一个名为TransferRequest的表,其中有两列是(ReceivingGuill,CurrentGuill)。它们都引用带有列的表(prisonID,location)。 我需要某种形式的连接来显示两个监狱的“位置”,例如结果:“华盛顿”、“纽约”。 我知道要从一个表中获取位置,我可以:Mysql 从同一表格的两行中选择数据,mysql,sql,join,Mysql,Sql,Join,我有一个名为TransferRequest的表,其中有两列是(ReceivingGuill,CurrentGuill)。它们都引用带有列的表(prisonID,location)。 我需要某种形式的连接来显示两个监狱的“位置”,例如结果:“华盛顿”、“纽约”。 我知道要从一个表中获取位置,我可以: SELECT Prison.location FROM Prison JOIN TransferRequest ON Prison.prisonID = TransferRequest.curre
SELECT Prison.location
FROM Prison
JOIN TransferRequest
ON Prison.prisonID = TransferRequest.currentPrison;
以及:
但我不知道如何从同一类型的表中选择两个相同类型的项。我该怎么办才能得到这张桌子?(标题:当前位置,接收位置)。相关子查询可以:
SELECT P1.location AS location1
, (SELECT Prison.location
FROM Prison
JOIN TransferRequest
ON Prison.prisonID = TransferRequest.receivingPrison ) AS location2
FROM Prison P1
JOIN TransferRequest T1
ON P1.prisonID = T1.currentPrison;
您可以使用以下选项:
SELECT (SELECT prison.Location
FROM TransferRequest tr
INNER JOIN Prison prison ON tr.reciveingPrisonID = prison.prisonID
WHERE tr.reciveingPrisonID = 1) AS'Recieving Location',
(SELECT prison.Location
FROM TransferRequest tr
INNER JOIN Prison prison ON tr.currentPrisonID = prison.prisonID
WHERE tr.currentPrisonID = 4) as 'Current Location'
请看这里->
希望这有帮助 也许我遗漏了什么,但如果您只想获取当前监狱和接收监狱的位置名称,您可以通过两次加入
监狱
表来获取它们:
SELECT
rec_prison.location as 'Recieving Location',
cur_prison.location as 'Current Location'
FROM TransferRequest tr
INNER JOIN Prison rec_prison
ON rec_prison.prisonID = tr.receivingPrison
INNER JOIN Prison cur_prison
ON cur_prison.prisonID = tr.currentPrison;
显示两个监狱的“位置”是什么意思?这两个监狱是什么?现在TransferRequest表有两列rP和cP。它们都有引用表监狱的ID,如(rP,cP):(1,3)、(2,4)、(5,1)。监狱有ID,还有一列有位置(prisonID,location):(1,纽约),(2,华盛顿),(3,奥兰多),(4,锡拉丘兹),(5,布法罗)他们都引用了一个表监狱,表中有列,在这些列上进行连接的具体列是什么?所以基于这些示例,我想要的结果是:(纽约,奥兰多),(华盛顿,锡拉丘兹),(纽约州布法罗市)。你是说
TransferRequest
参考监狱上的监狱.ID=TransferRequest.ID
?
SELECT
rec_prison.location as 'Recieving Location',
cur_prison.location as 'Current Location'
FROM TransferRequest tr
INNER JOIN Prison rec_prison
ON rec_prison.prisonID = tr.receivingPrison
INNER JOIN Prison cur_prison
ON cur_prison.prisonID = tr.currentPrison;