在SQL中为每个表设置不同的限制

时间:2014-06-13 10:17:53

标签: mysql sql

我正在尝试从PHP数据库中获取每个用户的信息和用户的号码。因此,问题是有时用户添加的数字超过1。这是表和SQL:

users table

id user_name email
1   John    john@gmail.com
2   David   david@gmail.com

numbers table

id  user_id   number    number_prefix
1     1        3144425      123
2     1        5484248      123
3     1        3144425      325
4     2        5991599      123

如您所见,第一位用户有3个号码。

这是我的sql:

SELECT
  u.*,
  n.*
FROM
 users u,
 numbers n
WHERE
 u.id = n.user_id AND
 u.id = 1

当然它会起作用。我想为每个表设置不同的LIMIT。我的意思是为table:users设置LIMIT 1,为table:numbers

设置LIMIT 3

为此,我使用了另一个sql,如下所示:

SELECT *,

    (
    SELECT
        number
    FROM
        menu
    WHERE
        user_id = 1
    ORDER BY id
    LIMIT 0,3) AS number

FROM users
WHERE id = 1
ORDER BY id
LIMIT 0,1

如你所知,子查询不能返回超过1行也许,IT应该更好使用SQL JOIN和GROUP BY ...我试过,但是没有任何好的结果......

2 个答案:

答案 0 :(得分:1)

在联接中使用子查询,然后它可以返回多行。

SELECT *
FROM (SELECT number
      FROM menu
      WHERE user_id = 1
      ORDER BY id
      LIMIT 3) AS number,
JOIN (SELECT *
      FROM users
      WHERE id = 1
      LIMIT 1) AS users

答案 1 :(得分:0)

     SELECT * 

      FROM (SELECT * FROM users LIMIT 1) AS us , numbers ns 

      WHERE us.id = '1' LIMIT 3;