0

我不是 SQL 专家,我只是尝试了所有JOINMySQL 提供的服务。

  1. 我主要需要来自 view1 的数据,使用WHERE, ORDER BY,LIMIT带有偏移量(如果没有这些条件,数据是不正确的。)
  2. view1 不受 view2 限制
  3. 数据也需要从 view2 中提取,但 view2 有它自己的WHERE(或任何最好的)条件
  4. view2 可能没有对应的数据,但不链接到 view1 就不能被抓取(NULLs 就好了!)

我只会给你两个SELECT对我有用的,而不是我想出的哈希值。

对于视图1:

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

(index1 和 count1IN用于存储过程)

对于视图2:

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 

(?是我输入的任意值)

我无计可施。我不知道如何融合这两个。

细节

请注意,INforview2几乎与view1查询相同。谢谢!

4

3 回答 3

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条件。

于 2012-12-29T08:43:12.200 回答
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 
于 2012-12-29T08:46:39.523 回答
0

我认为它应该对你有帮助

Select TableName1.id 
FROM TableName1 
JOIN TableName2 ON TableName1.id = TableName2.id
WHERE TableName1.column1 IS NULL OR TableName1.column1 = 1 
于 2012-12-29T09:00:32.480 回答