从mysql中的子查询访问父字段

时间:2014-01-12 03:18:07

标签: mysql

我试图在嵌套的父查询中访问正在调用的字段,这是我的表

表:提醒。

列:id:PK,rid:VARCHAR,title:VARCHAR,remind:Integer,start_day:DATE

SELECT id, remind, rid, title
FROM reminders
WHERE DATEDIFF(start_day, NOW()) <= (SELECT LEAST(3, remind))

基本上第二个&#34;提醒&#34; LEAST()命令中的列被引用以引用第一个&#34;提醒&#34;跨越每一行的列值,但由于我无法想象我会不断获得意外回报。

修改

为了回应戈登爵士,我提供了更详细的信息,我会尽我所能,但我真的不知道如何在这里提供表数据,但我会尝试。

所以基本上我试图从提醒表中选择所有项目,其中SET DAY(start_day)和TODAY之间的差异不超过TWO值中的一个,那些是3或值集在当前行的提醒列中。基本上,如果设置的值小于3,那么应该使用它,但是如果它超过3,则应该选择3。这是表格的视觉效果。

+---+-----------------+--------------------+-----------------+-------------+
|id | rid             | title              |   start_day     |  remind     |
+---|-----------------|--------------------|-----------------|-------------|
|1  | ER456GH         | This is real deep  | 2014-01-01      |  10         |
|2  | OUBYV90         | This is also deep  | 2014-01-13      |  10         |
|3  | UI90POL         | This is deeper     | 2014-01-13      |  60         |
|4  | TWEET90         | This is just deep  | 2014-01-14      |  0          |
+---+-----------------+--------------------+-----------------+-------------+

所以在编辑这个时,我意识到在第四个条目下有一个错误的表条目导致它被拉错(即提醒= 0)。叹。我觉得有些严重的短视/睡眠不足。查询确实有效。再次感谢。

1 个答案:

答案 0 :(得分:2)

这里不需要子查询。这有用吗?

SELECT id, remind, rid, title
FROM reminders
WHERE DATEDIFF(start_day, NOW()) <= LEAST(3, remind);