将值放在sql查询中的自定义列中

时间:2016-02-05 22:04:06

标签: mysql sql

我想创建一个sql查询,该查询创建一个不存在于db表中的列,并填充特定表中是否存在行。

例如: 我有3张桌子:
用户(对于用户列表) - UID,UName
位置(所有可用位置的列表) - LID,LName
UsersLocations(用户已签入的所有位置) - UserID,LocationID
我需要一个sql查询,它从用户ID中获取一个包含所有位置的表,其中一列表示用户是否在此位置。

用户表示例

UID | UName
1     John
4     Amy
5     Dann

位置表示例:

LID | LName
1     London
2     Barcelona
3     Paris
4     New York

UsersLocations表的示例:

UserID | LocationID
    5        1
    5        2

输出示例(对于userid = 5):

User ID | Location | Was Here
5         London     true
5         Barcelona  true
5         Paris      false
5         New York   false

输出需要包含位置表中的所有位置。 此外,UsersLocations表仅包含签入该位置的用户的用户ID。

1 个答案:

答案 0 :(得分:0)

嗯。一种方法是相关子查询:

select u.userid, l.location,
       (case when exists (select 1 from userLocations where ul.userid = u.userid and ul.lid = l.locationid)
             then 'true'
             else 'false'
        end) as WasHere        
from location l cross join
     (select 5 as userid) u;

特定于数据库的唯一部分是u的子查询。