我正在寻找一个快速的sql语句来确定表中是否存在字段.
实际上我正在使用这句话
Select 1
from dual
where exists (select 1
from all_tab_columns
where table_name = 'MYTABLE'
and column_name = 'MYCOLUMN')
Run Code Online (Sandbox Code Playgroud)
我认为必须有一种最快的方法来确定ORACLE中是否存在列.
UPDATE
我正在优化一个更大的软件系统,它可以多次调用这个查询,我无法修改源代码;(只有我可以修改存储在外部文件中的查询.
表all_tab_columns有超过一百万条记录.
互联网上有很多关于这个常见"问题"的信息.
解决方案如:
IF NOT EXISTS() BEGIN INSERT INTO (...) END
Run Code Online (Sandbox Code Playgroud)
在我看来并不是线程安全的,你可能会同意.
但是你能否确认将exists存入一个select的where子句会解决sql引擎中最高并发性的问题?够了吗?
insert into Table (columns)
select column1, column2, column3
where not exists (select top 1 1 from Table where something)
Run Code Online (Sandbox Code Playgroud)
应该在那里还添加了一些更高的事务级别,还是可以在默认的一个上执行:commit?
这会在未提交的水平下工作吗?
谢谢!
//稍后添加
我可以假设两个sql'都是正确的:
1)设置事务隔离级别可重复读取
IF NOT EXISTS() BEGIN INSERT INTO (...) END
Run Code Online (Sandbox Code Playgroud)
2)设置事务隔离级别可重复读取
insert into Table (columns)
select column1, column2, column3
where not exists (select top 1 1 from Table where something)
Run Code Online (Sandbox Code Playgroud) 我究竟做错了什么?从我的测试中,objDic.exists永远不会给出错误!
dim objDic
set objDic = createobject("scripting.dictionary")
objDic.add "test","I have not been deleted"
wscript.echo objDic.item("test") 'Displays -- I have not been deleted
objDic.remove "test"
wscript.echo """" & objDic.item("test") & """" 'Displays -- ""
if objDic.exists("test") then wscript.echo """" & objDic.item("test") & """" 'Displays -- ""
Run Code Online (Sandbox Code Playgroud) 我想检查列表中的任何项是否设置了字段 true
目前我这样做:
bool isPaid = visit.Referrals.Exists(delegate(AReferral r)
{
return r.IsPaidVisit;
});
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做Linq
对某些人来说可能是微不足道的,但如果现在就无法想象.
我想知道之间有什么不同Contains
和Exists
在List<T>
?
他们都可以确定元素是否在List<T>
.
但他们之间有什么不同?
// Create a list of parts.
List<Part> parts = new List<Part>();
// Add parts to the list.
parts.Add(new Part() { PartName = "crank arm", PartId = 1234 });
parts.Add(new Part() { PartName = "chain ring", PartId = 1334 });
parts.Add(new Part() { PartName = "regular seat", PartId = 1434 });
parts.Add(new Part() { PartName = "banana seat", PartId = 1444 });
parts.Add(new Part() { PartName = "cassette", PartId = …
Run Code Online (Sandbox Code Playgroud) 一旦页面上存在特定元素,是否存在用于调用回调的事件或简单函数.我不是问如何检查元素是否存在.
举个例子
$("#item").exists(function(){ });
Run Code Online (Sandbox Code Playgroud)
我最终使用了ready事件
$("#item").ready(function(){ });
Run Code Online (Sandbox Code Playgroud) 我在我的ISP上使用MySQL 5.1.这是我的查询
mysql_query("
IF EXISTS(SELECT * FROM licensing_active WHERE title_1='$title_1') THEN
BEGIN
UPDATE licensing_active SET time='$time' WHERE title_1='$title_1')
END ELSE BEGIN
INSERT INTO licensing_active(title_1) VALUES('$title_1')
END
") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
错误是
... check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS(SELECT * FROM licensing_active WHERE title_1='Title1') THEN ' at line 1
Run Code Online (Sandbox Code Playgroud)
我的实际任务涉及到
WHERE title_1='$title_1' AND title_2='$title_2' AND version='$version' ...ETC...
Run Code Online (Sandbox Code Playgroud)
但是我已经减少了它以使我的问题解决更简单
在我对此的搜索中,我一直看到"ON DUPLICATE KEY UPDATE"的引用,但不知道如何处理它.
来自oracle的这个 java教程:
请注意!Files.exists(path)不等同于Files.notExists(path).
他们为什么不等同?它在解释方面没有进一步说明.有人知道更多相关信息吗?提前致谢!
我需要能够检查一列是否存在,如果存在,那么我想从中进行选择。
我正在尝试许多不同的版本,但是我什至不确定是否可行。
这是我最近的尝试:
SELECT
IF (EXISTS (SELECT `Period` AS `Period` FROM myview), `PERIOD`,
IF (EXISTS (SELECT `Country` AS `COUNTRY` FROM myview),`COUNTRY` FROM myview ;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑
我在这里看到了另一个问题:MySQL,使用SQL检查表中是否存在一列
但是我仍然对if语句感到困惑。我可以使用上面问题中的答案来检查该列是否存在。但是我的问题是-如果发现结果为真,如何从该列执行select语句。
编辑2
下面的答案表明我应该使用BEGIN和END语句,这很有意义。但是,我的查询在第一行抱怨。它说“意外的IF”-有人可以确认这是否是正确的MYSQL语法吗?
if( exists (SELECT *
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'view_name'
AND COLUMN_NAME = 'column_name') )
begin
SELECT `column_name` FROM `view_name`
end
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我有这样的查询:
IF EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) THEN
DELETE FROM table2 WHERE col2 = ?
END IF
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么上面的查询不起作用.这也不起作用:
IF EXISTS(SELECT 1 FROM table1 WHERE col1 = ? LIMIT 1) BEGIN
DELETE FROM table2 WHERE col2 = ?
END
Run Code Online (Sandbox Code Playgroud)
MySQL告诉我有一个语法错误,我该如何解决?
exists ×10
mysql ×3
c# ×2
if-statement ×2
insert ×2
list ×2
contains ×1
dictionary ×1
events ×1
file ×1
java ×1
jquery ×1
linq ×1
oracle ×1
php ×1
select ×1
sql ×1
sql-server ×1
transactions ×1
vbscript ×1