注意:我知道SQL注入的可能性等。这个问题是理论上的。
假设用户查询服务器上的页面,getListOfPeople.php,并将其用户ID作为post参数发送。
php页面包含以下内容(简化的伪代码):
$UUID = $_POST ["UUID"];
"SELECT name, bio, photo FROM people WHERE NOT EXISTS (SELECT blocked_UUID FROM 'name' WHERE blocked_UUID = $UUID)"
让我们说人表是这样的:
NAME BIO PHOTO
BOB blah blah o43987h2fdof43hr43h
SARA blah blah 098u43jfewoijfwoiej
MARK blah blah re988cd9sc2h33hfddh
表 BOB 如下所示:
blocked_UUID
287364
387761
497745
329844
我们希望为人表中的人员提供对某些用户不可见的功能......因此他们只是将这些不需要的用户添加到他们自己的表中,其中包含被阻止的用户ID列表。
我的问题是,在查询中:
"SELECT name, bio, photo FROM people WHERE NOT EXISTS (SELECT blocked_UUID FROM 'name' WHERE blocked_UUID = $UUID)"
在 FROM' name' 的部分中,我试图弄清楚要使用的正确语法以便使其工作(查询表格)其中表名是从同一查询派生的变量。)
如果可能的话,我想避免完全不同的方法来解决问题,并坚持一个查询。
答案 0 :(得分:2)
执行此操作的正确方法是使用单个blocks
表:
name blocked_UUID
BOB 287364
BOB 387761
SARA 123456
SARA 232323
MARK 112233
然后你的查询将是:
SELECT name, bio, photo
FROM people
WHERE NOT EXISTS (
SELECT 1 FROM blocks
WHERE blocked_UUID = $UUID
AND blocks.name = people.name)