【问题标题】:Select rows with show flag but based on another table选择带有显示标志但基于另一个表的行
【发布时间】:2014-12-09 08:53:36
【问题描述】:

谁能帮我解决这个问题。

我有 2 张桌子:

TASKS:(id,once)
SAVED_tasks (id, task_id) 
  • 我保存任务的表..

我需要显示所有任务,但如果任务的值为 1 并且如果已插入 SAVED_tasks 表中,则不需要显示..

示例:

任务:

id, name, once
1, task1, 0
2, task2, 1
3, task3, 0
4, task4, 1

已保存任务:

id, task_id
1, 1
2, 2
3, 3
4, 4

我需要结果:

1, task1
3, task3

【问题讨论】:

  • 问题不清楚 - 你能提供一些示例数据和你想要得到的输出吗?
  • 我需要显示一次 = 0 的任务,而不是隐藏它们.. 显示全部,但只有在任务有一次 = 1 并插入到 saved_tasks 时才隐藏

标签: mysql sql select join


【解决方案1】:
SELECT TASK.id, SAVED_tasks.task_id FROM TASKS  Inner join SAVED_tasks ON   TASK.id = SAVED_tasks.id
AND  TASK.once > 1

【讨论】:

    【解决方案2】:

    试试这个:

    SELECT t.id, t.once
    FROM TASKS t 
    LEFT JOIN SAVED_tasks st ON t.id = st.task_id 
    WHERE (t.once != 1 OR (t.once = 1 AND st.id IS NULL));
    

    SELECT t.id, t.once
    FROM TASKS t 
    LEFT JOIN SAVED_tasks st ON t.id = st.task_id 
    WHERE NOT(t.once = 1 AND st.id IS NULL);
    

    【讨论】:

      【解决方案3】:

      应该这样做:

      Select * from TASKS
      Where TASKS.id Not In (Select task_id from SAVED_TASKS)
      and TASK.once != 1
      

      【讨论】:

        【解决方案4】:

        如果您的 SAVED_task 表中有数据并且一次 != 1 如下所示需要值,请尝试连接两个表:

        SELECT t.id
        FROM TASKS t INNER JOIN SAVED_tasks st
        ON   t.id = st.id
        WHERE t.once != 1
        

        【讨论】:

        • 我需要显示一次 = 0 的任务,而不是隐藏它们.. 显示全部,但只有在任务有一次 = 1 并插入到 saved_tasks 时才隐藏
        猜你喜欢
        • 2019-12-22
        • 1970-01-01
        • 2019-02-14
        • 2011-06-13
        • 2021-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        相关资源
        最近更新 更多