我想在MySQL的第二个查询中使用第一个查询中的列使用两个查询

时间:2011-08-17 08:45:01

标签: mysql count

我有这两个问题:

第一个:

SELECT * FROM item, user WHERE item_def = '289' 
    AND item_quality = '6' AND user.steam_64 = item.steam_64

第二个:

select count(item_id) from item where steam_64 = '".$steam_id64."'"

所以基本上,我的第一个查询是返回匹配项的用户(在这种情况下item = 289)。我的第二个查询只是查看在第一个查询中返回的每个用户总共有多少项。

我想在第一个查询中计算一下。

2 个答案:

答案 0 :(得分:0)

您可以复制第二个查询并将其粘贴到第一个查询的选择列表中。

SELECT
  item.*,
  user.*,
  (select count(item_id) from item where steam_64 = '$steamid64') AS `count`
FROM
  item
INNER JOIN
  user
ON
  item.steam_64 = user.steam_64
WHERE
  item.item_quality = 6
AND
  item.item_def = 289

我觉得像母亲一样对她的孩子说吃你的蔬菜,但是...... 写出你的联接而不引用你的数字

答案 1 :(得分:-1)

我认为这只是添加GROUP BY子句的问题,因为您对第二个表感兴趣的只是计数。

在SELECT主语句中添加一个SELECT语句将导致对返回的每一行执行额外的SELECT查询 - 这可能会大大延长查询时间。

以下是我对此的看法:

SELECT
  count (*) as count_of_items,
  user.*
FROM
  user join item on item.steam_64 = user.steam_64 
WHERE item.item_quality = 6 AND item.item_def = 289
GROUP BY user.steam_64

GROUP BY子句必须根据每个连接行的相同列完成。