以下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时无法使用它。请帮我解决这个问题。
答案 0 :(得分:1)
您的查询不起作用的原因是您不能在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);
.