我应该列出不阻止会话用户的用户。但是块位于不同的表中,我尝试在查询中进行多次选择,但它不起作用...
阻止表格列:id,block_to,block_from
SELECT *
FROM users
WHERE (id!={$session['id']} AND birth>='{$bd}' AND ban=0)
UNION
SELECT *
FROM blocks
WHERE block_to!={$session['id']}
ORDER BY id DESC
LIMIT $display,$limit
答案 0 :(得分:0)
如果您不想包括阻止会话用户的用户,则需要使用NOT IN
运算符,例如:
SELECT *
FROM USERS
WHERE id!={$session['id']}
AND birth>='{$bd}'
AND ban=0
AND ID NOT IN (
SELECT block_to FROM blocks WHERE block_from = {$session['id']}
);
答案 1 :(得分:0)
您可以使用JOIN
或LEFT JOIN
来联接这样的表(JOIN或LEFT JOIN只是一种写亲和力)。
按条件返回所有用户过滤器,如果未找到阻止信息,则为空:
SELECT u.*, b.*
FROM users AS u
LEFT JOIN blocks AS b ON (u.id = b.block_to)
WHERE u.id!={$session['id']}
AND u.birth>='{$bd}'
AND u.ban=0
ORDER BY id DESC
LIMIT $display,$limit;
这必须返回所有在用户及其关联的块中没有会话过滤的用户。