2012-08-15 67 views
0

嗨,大家好我有我的代码在这里我是如何做嵌套选择,现在我的问题是我想删除我的嵌套选择一些文件,但我不知道如何..MySQL的 - 如何从嵌套选择删除

SELECT title, 
     filename, 
     jono, 
     client, 
     dt, 
     remarks 
FROM ((SELECT doc_title AS title, 
       doc_filename AS filename, 
       doc_jono  AS jono, 
       doc_client AS client, 
       doc_date  AS dt, 
       remarks 
     FROM tbl_doc) 
     UNION 
     (SELECT wbok_title AS title, 
       wbok_filename AS filename, 
       wbok_jono  AS jono, 
       wbok_client AS client, 
       wbok_date  AS dt, 
       wbok_remarks AS remarks 
     FROM tbl_wbok) 
     UNION 
     (SELECT cad_title AS title, 
       cad_filename AS filename, 
       cad_jono  AS jono, 
       cad_client AS client, 
       cad_date  AS dt, 
       cad_remarks AS remarks 
     FROM tbl_cad) 
     UNION 
     (SELECT oth_title AS title, 
       oth_filename AS filename, 
       oth_jono  AS jono, 
       oth_client AS client, 
       oth_date  AS dt, 
       oth_remarks AS remarks 
     FROM tbl_oth)) AS t1 
ORDER BY title 

回答

0

你不能从这个SELECT中做到这一点,因为它包含UNION;你必须为每个表单独做DELETE。

顺便说一句,您的四个表应该是一个单一的表。包含包含DOC,WBOK,CAD或OTHER的CATEGORY字段;这样你就可以区分你的四个数据集。这样做会大大简化您的整体逻辑。

+0

我怎么能创建一个类别? – Andrew 2012-08-15 17:36:28

+0

向表中添加一个新字段。把它命名为“类别”。 – 2012-08-15 17:55:48

0

这样做的一般形式是

如果你有一个表

CREATE TABLE Foo (bar integer PRIMARY KEY) 

那么这将是

DELETE FROM table tbl 
    WHERE tbl.id = (SELECT id FROM table ... JOIN .. WHERE X=y etc..) 

如果你的情况,如果你想删除的东西在UNION中,您必须逐个完成它们,因为您只能删除一次一张桌子。

数据结构在所有表上都是一样的。罗伯特哈维建议你创建一个名为'CATEGORY'的附加列,用于编码数据所在的表。这是一个很好的主意,它会让你的删除更容易

+0

mysql不接受您的查询 – Andrew 2012-08-15 17:42:38

+0

我的查询不是真正的查询,它是一种通用的形式。查看我的编辑 – dfb 2012-08-15 18:11:43