【问题标题】:How to SELECT with a LIMIT while needing multiple rows with a same column value?如何在需要具有相同列值的多行时使用 LIMIT 进行选择?
【发布时间】:2012-02-25 00:27:51
【问题描述】:

我以下表为例。

id uid car 
1  3   BMW
2  3   AUDI
3  3   JEEP
4  5   MERC
5  6   BMW
6  6   FIAT

现在,我想获得所有汽车,但只有 2 个用户,但不知道他们有多少辆汽车。当他们都只有一辆车时,我可以做一个LIMIT 3,但我怎样才能得到所有的车,但只能供 2 个用户使用?

【问题讨论】:

  • 您能详细说明您要完成的工作吗??
  • @KamranAli 我想要的是获取一个用户列表(使用 jQuery),首先,每个用户只显示一辆车。如果你点击用户,你可以看到他所有的车。我可以通过多个查询来做到这一点,但宁愿将这一切合二为一。 (PS,实际的应用解释起来有点复杂,所以我以汽车为例)
  • @ajreal 这将如何工作?我以前从未使用过 GROUP_CONCAT。
  • 我认为这可以在前端而不是在 SQL 端完成,您可以简单地获取所有行,而不是在前端使用 jquery 显示/隐藏它们。
  • 没错,但我喜欢在第一行显示某人拥有多少辆汽车(例如:查看他所有的 3 辆汽车)。所以我需要预先提供这些数据。这可以在一个 SQL 查询中完成吗?

标签: mysql select group-concat


【解决方案1】:

编辑

如果 2 个用户未知,您可以使用 MySQL GROUP_CONCAT

$query = mysql_query("SELECT uid, GROUP_CONCAT(car) as cars FROM tablename GROUP BY uid ORDER BY uid ASC LIMIT 0,2");
while ($get = mysql_fetch_array($query)) {
  $userid = $get['uid'];
  $result = explode(",", $get['cars']);
  echo '<h2>User #' . $userid . ' owns the following cars:</h2>' . "\n";
  echo '<ul>' . "\n";
  foreach ($result as $car) {
    echo '  <li>' . $car . '</li>' . "\n";
  }
  echo '</ul>' . "\n";
}

注意:不要忘记在 SELECT 查询中更改表名

【讨论】:

  • 谢谢,但这不是解决方案,因为我不知道现有的用户。
  • @Glooh - 好的!刚刚更新了我的答案。应该正是你要找的东西:)
  • 太棒了!正是我需要的!我对其进行了测试,并且可以在前端做一些额外的事情,但至少我现在有一个查询。谢谢!!
  • @Glooh - 太棒了!没问题。很高兴我能帮忙:)
猜你喜欢
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 2016-11-05
  • 2013-09-20
  • 1970-01-01
  • 2014-12-08
相关资源
最近更新 更多