繁体   English   中英

复杂的SQL连接查询

[英]Complicated SQL Join Query

我有两个表之一是用户:

id      int(11)     NO  PRI     NULL    auto_increment
membership_type     tinyint(3) unsigned     NO  MUL     NULL     
username    varchar(16)     NO      NULL     
password    char(40)    NO      NULL     
email   varchar(100)    NO      NULL     
firstname   varchar(40)     NO      NULL     
lastname    varchar(40)     NO      NULL     
company     varchar(120)    NO      NULL     
birthday    date    NO      NULL     
country     smallint(5) unsigned    NO      NULL     
city    smallint(5)     NO      NULL     
address     varchar(200)    NO      NULL     
landphone   char(10)    NO      NULL     
mobilephone     char(10)    NO      NULL     
website     varchar(150)    NO      NULL     
feedback_score  tinyint(4)  NO      NULL     
created     datetime    NO      NULL     
last_login  datetime    NO      NULL     
last_ip     varchar(15)     NO      NULL     

另一个名字是user_cache:

user_id     int(11)     NO  MUL     NULL     
cache_type  int(50)     NO      NULL     
value   varchar(100)    NO      NULL     

我想选择用户数据(成员身份,用户名,名字,姓氏等),然后选择相关用户的缓存数据(从user_cache中选择*,其中user_id = X)。 我选择具有简单sql查询的用户,然后使用另一个sql查询获取缓存详细信息。 我想将查询合并为一个查询。 这可能吗 ?

select u.*, uc.*
from users as u
left join user_cache as uc
    on u.id = uc.user_id

您将获得user_cache数据每一行的所有用户信息,如果用户没有user_cache数据,则将获得user_cache数据的null。

我想这可能行得通吗?

SELECT u.*, uc.*
FROM user u
   left join user_cache uc ON uc.user_id = u.id 

也许我无法正确理解您的问题,但是以下查询应该返回您需要的内容:

SELECT u.membership_type, u.firstname, ..., uc.*
FROM users u
LEFT JOIN user_cache uc
ON u.id = uc.user_id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM