不是"化名",而是类似...
我正在使用一个不完整的MySQL数据库,从外部引用添加重复的手动更新.这是缓慢的,我希望精简一个我已经使用了几十次的SELECT.我前面还有几千个这样的.
我已经看到了关于创建PROCEDURES的建议,但是由于我试图"别名"一个部分查询,我可能问错了问题.
我想把这一点浓缩一下:
SELECT book, fulltitle, author, num, lastread, category FROM books
...类似这样的东西:
sBk
所以我输入sBk WHERE book="success";
,MySQL执行:
SELECT book, fulltitle, author, num, lastread, category FROM books WHERE book="success";
一致性R.I.P.
在我的数据中,大多数作者都是未定义的——我的任务就是解决这个问题. 所以我在参考资料中搜索这位作者的书,然后更新记录.
有些书的名字是可以预见的,例如:john1,john2,john3. 其他的则不是,例如jrs2、smithj9、fourteen 1、AllYourBase等.因此,命令通常看起来像这样:
SELECT book, fulltitle, author, num, lastread, group FROM books WHERE book like \
"artp1%" OR book LIKE "aod%" OR book LIKE "fatal%" OR book LIKE "outside%" OR \
book LIKE "geo-cache%" OR book LIKE "frostbite" OR book LIKE "quickb3%" OR book \
LIKE "instantcof%" OR book = "sevenmile" OR book = "uberfast";
所以我点击向上箭头,删除第一部分,然后输入author=
得到这个:
UPDATE books SET author="John Smith" WHERE book LIKE (everything above)";
查找和图书/作者关联都是手动的,我无法更改这一点.但是,一旦我得到与所有正确书籍匹配的SELECT语句,就必须有一种更智能的方法来执行这些数据更新.
我所try 的--以及注意事项
-
books
表有几十列,或者我只需要select *
列. -
我可以从前面的SELECT中复制/粘贴,但我对鼠标不感兴趣,这让它变得和使用Delete键一样慢.
-
如果MySQL有一个基本上是"对前面的SELECT执行操作"的函数,那就太好了.但是,如果存在这样的函数,我就无法搜索正确的术语来找到它.
我试过creating a procedure,但是我不能让它接受一个部分命令——而且这个错误不是很好的描述性——有什么方法可以纠正我在这里做的事情吗?
CREATE PROCEDURE sBk() BEGIN SELECT book, fulltitle, author, num, lastread, category from books END;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that \
corresponds to your MySQL server version for the right syntax to use near '' at line 1
匹配一本书很简单:点击上一个UPDATE命令,编辑,继续.然而,许多命令的长度和复杂性几乎扼杀了简单的[UpArrow]在前一个语句中的优势.