我有一个mysql_query,它使用union同时处理两个查询,如:
$friends_a = mysql_query("(SELECT * FROM users WHERE id!='$user_q[id]' AND id='$friends_1_q[user_one_id]') UNION ALL (SELECT * FROM users WHERE id!='$user_q[id]' AND id='$friends_1_q[user_two_id]')");`
我希望限制这个(两个查询的唯一限制),我该怎么办? (我已经尝试了很多我在网上或这里找到的东西)。抱歉英语不好:D
答案 0 :(得分:1)
您可以将查询包装在parens中,并将其作为内联视图引用。例如,要返回最多五行:
SELECT v.*
FROM (
-- original query goes here
) v
LIMIT 5
考虑在外部查询上添加ORDER BY
(在LIMIT
子句之前),以使结果更具确定性。
或者,完全抛弃UNION ALL
操作,只写一个查询:
SELECT u.*
FROM users u
WHERE u.id != ?
AND u.id IN ( ? , ? )
ORDER BY u.id
LIMIT 2
提供占位符的值:
$user_q[id]
$friends_1_q[user_one_id]
$friends_1_q[user_two_id]
附录:
不推荐使用mysql_
个函数。使用mysqli或PDO进行新开发。并使用带有绑定占位符的预准备语句。
如果这不可能(无论出于何种原因),请确保正确转义SQL文本中包含的变量值。