mysql VIEW中的子查询

时间:2016-09-10 04:13:54

标签: mysql

以下SQL Query在用于创建VIEW时显示子查询错误的用法。这是从table1获取名为CODE的字段的值,其中table2中不存在这些值,并且当table2中的那些CODE的状态不是“已分配”或“已售出”时。

SELECT S1.CODE
FROM STOCK S1
LEFT JOIN (  
        SELECT t1.CODE
        FROM STOCK t1
        JOIN SALES t2 ON t2.CODE = t1.CODE
        WHERE t2.STATUS IN ('Sold', 'Assigned')) S2 ON S2.CODE = S1.CODE
WHERE S2.CODE IS NULL

SQL查询提供了良好的输出,但在创建VIEW时无法使用它。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

关于MySQL Subqueries

的良好信息

您的查询不起作用的原因是您不能在MySql 视图的FROM子句中有子查询。

我无法100%确定地理解您的要求,但似乎您希望一个表中的行不存在于另一个表中,或者它们可能存在于另一个表中,但它们不能具有某种状态。如果我对要求的理解是正确的,那么这个查询就会做同样的事情。这些是我现在必须使用的表格,现在验证了这种方法很好。

如果我对此要求有误,请提供指导。

/* 
   VIEW: v_testview
   get rows where adminid not in second table
   and rows that are in second table but have
   an email not equal duckduckgo@notgoogle.com    
*/
CREATE VIEW v_testview AS  
  SELECT s.adminid, s.company
  FROM panel_customers s
  WHERE s.adminid NOT IN 
               (SELECT sa.adminid 
                FROM panel_admins sa 
                WHERE sa.email = 'duckduckgo@notgoogle.com')
  AND s.adminid NOT IN 
               (SELECT sa.adminid 
                FROM panel_admins sa);
  .