我希望能够使用我在子查询中进一步选择的项目之一。 正如您在本示例中看到的,我已将相关“变量”设置为 100,但实际上这将是一个动态数字,因此我需要能够在子查询中访问它。
INSERT INTO users_friends (userId, friendId)
SELECT 77, id as noob
FROM users WHERE email = 'a@g.com'
AND
NOT EXISTS (SELECT * FROM users_friends
WHERE userId = 77 and friendId = noob)
LIMIT 1
最佳答案
我不完全确定我理解你的问题,但 NOT EXISTS 的工作方式就像 LEFT JOIN 和 IS NULL 一样。所以我认为这会起作用:
SELECT 77, @noob
FROM users u
JOIN (SELECT @noob:= 100) r
LEFT JOIN users_friends uf on u.userid = uf.userid and uf.friendid = @noob
WHERE email = 'a@g.com'
AND uf.userid IS NULL
这是SQL Fiddle .
关于MYSQL - SELECT AS 别名在子查询中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837024/