从多个表中选择数据?

时间:2011-02-20 07:16:07

标签: sql mysql

我有3个表,其中3个字段都相同。我基本上想从每个表中选择信息

例如:

userid = 1

我想从所有3个表中选择数据,其中userid = 1

我目前正在使用:

   SELECT r.*, 
          p.*, 
          l.*
     FROM random r
LEFT JOIN pandom p ON r.userid = p.userid
LEFT JOIN landom l ON l.userid = r.userid
    WHERE r.userid = '1'
    LIMIT 0, 30

但它似乎不起作用。

3 个答案:

答案 0 :(得分:4)

  

有3个字段全部相同

所以你的意思是你想要所有3个表中的the same 3 fields

   SELECT r.col1, r.col2, r.col3
     FROM random r
    WHERE r.userid = '1'
    LIMIT 0, 30
UNION ALL 
   SELECT p.pcol1, p.pcol_2, p.p3
     FROM pandom p
    WHERE p.userid = '1'
    LIMIT 0, 30
UNION ALL 
   SELECT l.l1, l.l2, l.l3
     FROM landom l
    WHERE l.userid = '1'
    LIMIT 0, 30

字段不必命名相同,但相同类型需要在第1,2和3位排列。

限制的工作方式是:

  • 它将尝试从random获得30。
  • 如果已经有30个,它甚至不会查看其他2个表
  • 如果它距离random少于30,则会尝试从pandom填充最多30个,最后只会landom

答案 1 :(得分:2)

SELECT t1.*, t2.*, t3.* 
   FROM `random` as t1, `pandom` as t2, `landom` as t3 
WHERE t1.`userid`='1' AND t2.`userid`='1' AND t3.`userid`='1'

答案 2 :(得分:1)

SELECT * FROM `random`
         JOIN `pandom` USING (`userid`)
         JOIN `landom` USING (`userid`)
WHERE `userid`='1'
相关问题