sql - 嵌套 SQL 语句但在内部语句中重用变量?

标签 sql select nested aliases

我正在尝试在 SQL (MySQL) 中做一些我不确定是否可行的事情。该场景与用户调查有关,我正在尝试创建一项调查,在幕后时间段后重新提出问题。我的 SQL 今天看起来像这样(我必须在内部 select 语句中硬编码问题 id,因为我不知道还能怎样)。

SELECT surveyquestions.priority, surveyquestions.id, surveyquestions.question,       surveyquestions.html FROM surveyquestions
    LEFT JOIN surveyanswers ON surveyquestions.id = surveyanswers.id AND surveyanswers.uuid = 22946252362612764
    WHERE (surveyanswers.id IS null OR 
    (SELECT datestamp FROM surveyanswers WHERE id = 22 ORDER BY datestamp DESC LIMIT 1) < 
    DATE_SUB(NOW(),INTERVAL 1 HOUR))
    AND surveyquestions.priority != 999 
    AND surveyquestions.brid = 'testprod2'
    ORDER BY surveyquestions.priority LIMIT 1;

我想要做的,不知何故,使用外部 SELECT 中的 Surveyquestion.id 作为内部 select where 语句的一部分(请参阅 WHERE id = 22 是硬编码位)。

编辑:声明的更多信息/背景
- 优先级是问题出现的顺序
- 优先级999表示不显示问题
-brid 是与问题相关的品牌/产品
- uuid 是回答问题的用户的唯一标识符

最佳答案

为了在表名称相同时执行此操作,您需要为表指定别名:

SELECT surveyquestions.priority, surveyquestions.id, surveyquestions.question,       surveyquestions.html FROM surveyquestions
    LEFT JOIN surveyanswers oa ON surveyquestions.id = oa.id AND oa.uuid = 22946252362612764
    WHERE (surveyanswers.id IS null OR 
    (SELECT datestamp FROM surveyanswers ia WHERE ia.id = oa.id ORDER BY datestamp DESC LIMIT 1) < 
    DATE_SUB(NOW(),INTERVAL 1 HOUR))
    AND surveyquestions.priority != 999 
    AND surveyquestions.brid = 'testprod2'
    ORDER BY surveyquestions.priority LIMIT 1;

我使用 oa 表示“外部答案”,使用 ia 表示“内部答案”。

关于sql - 嵌套 SQL 语句但在内部语句中重用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17318096/

相关文章:

mysql - 将两个表中的信息合并到一个表中

c# - 使用 SelectionMode Multiple/Extended 跨多个嵌套列表框获取所有选定项

java - 关键字 'new' 如何工作,特别是当我启动静态嵌套类时?

sql - Oracle获取最近一小时内更新的记录

SQL语句根据日期列查找某个日期之间较旧的数据

mysql - 将 SQL 查询字符串插入到 SQL 表中

jquery - :selected returns false for an option of a select element which has multiple attribute set on runtime

mysql - 如果第一行将被随机化,其余行应按标准排序,如何选​​择行

python-3.x - 如何从复杂字典中提取嵌套数据并从中提取嵌套数据以构建新字典?

MySQL SELECT table.column AS 表