1

我有这个工作正常的查询:

SELECT p.design_id, p.product_id, t.account_id, p.name, p.width, p.height, 
 p.price, t.email 
 FROM designs AS p
 INNER JOIN ( SELECT user_id, email, account_id FROM users ) AS t
 USING(user_id) ORDER BY p.design_id LIMIT 0, 300 );

现在我正在尝试修剪结果:

SELECT p.design_id, p.product_id, t.account_id, p.name, p.width, 
 p.height, p.price, t.email 
 FROM designs AS p
 INNER JOIN ( SELECT user_id, email, account_id FROM users 
 WHERE account_id = 0) AS t
 USING(user_id) ORDER BY p.design_id LIMIT 0, 3 );

但是第二个查询结果和第一个完全一样。

请问有人可以对此有所了解吗?

//更新

我删除了 php 变量以阻止不必要的混淆 :)

4

3 回答 3

2

你为什么不尝试在 where 条件下使用占位符,如下所示,或者它是一个错字。

"SELECT p.design_id, p.product_id, t.account_id, p.name, p.width, p.height, p.price, t.email 
 FROM designs AS p
 INNER JOIN ( SELECT user_id, email, account_id FROM users WHERE account_id = **".$ind."**) AS t
 USING(user_id) ORDER BY p.design_id LIMIT ".$from.", ".$howMany );
于 2012-11-02T13:11:04.070 回答
2

试试这个

"SELECT   p.design_id, p.product_id, t.account_id, 
          p.name, p.width, p.height, p.price, t.email 
 FROM     designs AS p
          INNER JOIN  users AS t
              ON p.user_id = t.user_ID AND
                 t.account_id = $ind
 ORDER BY p.design_id LIMIT " . $from . ", " . $howMany
于 2012-11-02T13:16:45.377 回答
2

您尚未从设计中选择列user_id。您的 JOIN 根本不起作用。从手册:

USING(column_list) 子句命名必须存在于两个表中的列列表。

或者所有用户的 account_id = 0(或至少所有有设计的用户)。

如果两者都不是,请尝试在嵌套选择表“t”之前删除单词“AS”。

您也可以不使用 USING 进行尝试,使用“ON t.user_id = p.user_id”而不是“USING(user_id)”

于 2012-11-02T13:42:49.373 回答