当数据可用时,从view1,view2中选择(JOIN?)

时间:2012-12-29 08:38:24

标签: mysql select join multiple-tables

我不是一个SQL人员,我只是尝试了每个JOIN MySQL提供的服务。

  1. 我主要需要使用WHEREORDER BYLIMIT使用带偏移的view1中的数据(没有这些条件的数据不正确。)
  2. view1不受view2
  3. 的限制
  4. 还需要从view2中提取数据,但是view2有自己的WHERE(或其他最好的)条件
  5. view2可能没有相应的数据,但如果没有链接到view1就不应该抓取它(NULL s就好了!)
  6. 我只会告诉你两个SELECT对我有用,而不是我想出的哈希。

    对于view1:

    SELECT * FROM view1 
    WHERE column1 IS NULL OR column1 = 1 
    ORDER BY dateColumn DESC LIMIT index1, count1;
    

    (index1和count1是我用于存储过程的IN

    对于view2:

    SELECT * FROM table2 
    WHERE column1 = ? AND table1_id IN (
      SELECT id FROM view1 
      WHERE column1 IS NULL OR column1 = 1 
      ORDER BY dateColumn DESC LIMIT index1, count1
    ) 
    GROUP BY table1_id 
    

    (?是我输入的任意值)

    我的智慧结束了。我不知道如何融合这两个。

    具体细节信息

    请注意,IN的{​​{1}}几乎与view2查询完全相同。谢谢!

3 个答案:

答案 0 :(得分:1)

您可以为table2编写子查询并在那里添加WHERE子句,也可以在查询的前面添加WHERE子句 -

SELECT * FROM table2 t2
  JOIN (
       SELECT id FROM table1
       WHERE column1 IS NULL OR column1 = 1
       ORDER BY dateColumn DESC
       LIMIT index1, count1
       ) t1
    ON t1.id = t2.table1_id
WHERE
  t2.column1 = ?
GROUP BY
  t2.table1_id

在这个例子中,我使用了JOIN而不是WHERE IN条件。

答案 1 :(得分:0)

这个查询怎么样:

Select t1.id 
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.table1_id
WHERE t1.column1 IS NULL OR t1.column1 = 1 

答案 2 :(得分:0)

我认为它应该对你有帮助

Select TableName1.id 
FROM TableName1 
JOIN TableName2 ON TableName1.id = TableName2.id
WHERE TableName1.column1 IS NULL OR TableName1.column1 = 1