我想使用参数进行查询,如下所示:
SELECT * FROM MATABLE
WHERE MT_ID IN (368134, 181956)
Run Code Online (Sandbox Code Playgroud)
所以我想到这个
SELECT * FROM MATABLE
WHERE MT_ID IN (:MYPARAM)
Run Code Online (Sandbox Code Playgroud)
但它不起作用......
有没有办法做到这一点 ?
我实际上使用的是IBX和Firebird 2.1
我不知道IN子句中有多少参数.
我正在设计一个购物车.为了避免在产品价格发生变化后显示不准确定价的旧发票问题,我将价格字段从Product表移动到ProductPrice表中,该表包含3个字段,pid,日期和价格.pid和date构成表的主键.这是表格的示例:
pid date price
1 1/1/09 50
1 2/1/09 55
1 3/1/09 54
Run Code Online (Sandbox Code Playgroud)
使用SELECT并GROUP BY查找每种产品的最新价格,我提出:
SELECT pid, price, max(date) FROM ProductPrice GROUP BY pid
Run Code Online (Sandbox Code Playgroud)
返回的日期和pid是准确的.我收到的每个独特的pid只有1个条目,随之而来的日期是该pid的最新日期.然而,令人惊讶的是价格回归.它返回了匹配pid的第一行的价格,在这种情况下是50.
在重述我的陈述之后,我想出了这个:
SELECT pp.pid, pp.price, pp.date FROM ProductPrice AS pp
INNER JOIN (
SELECT pid AS lastPid, max(date) AS lastDate FROM ProductPrice GROUP BY pid
) AS m
ON pp.pid = lastPid AND pp.date = lastDate
Run Code Online (Sandbox Code Playgroud)
虽然重写的语句现在产生了正确的价格(54),但这样一个简单的声音查询需要内部联接才能执行似乎令人难以置信.我的问题是,我的第二个陈述是完成我需要做的最简单的方法吗?或者我在这里遗漏了什么?提前致谢!
詹姆士
我有两个查询检索域中的所有组和所有用户, Mydomain
--; Get all groups in domain MyDomain
select *
from OpenQuery(ADSI, '
SELECT samaccountname,mail,sn,name, cn, objectCategory
FROM ''LDAP://Mydomain/CN=users,DC=Mydomain,DC=com''
WHERE objectCategory=''group''
ORDER BY cn
')
--; Get all users in domain MyDomain
select *
from OpenQuery(ADSI,'
SELECT objectCategory, cn, sn, mail, name, department,samaccountname
FROM ''LDAP://Mydomaindomain/CN=users,DC=Mydomain,DC=com''
WHERE objectCategory=''user''
ORDER BY cn
')
-- where samaccountname='mylogin'
Run Code Online (Sandbox Code Playgroud)
我想知道的是,
如何检索MyDomain特定用户所属的所有组的列表?
[更新]我能够获得相反的结果
给定组名称,检索所有用户
select *
from OpenQuery(ADSI,
'SELECT objectCategory, cn, sn, mail, name, department
FROM ''LDAP://Mydomain/CN=users,DC=wl-domain,DC=com''
WHERE MemberOf=''cn=_____GROUPNAME_____,CN=users,DC=Mydomain,DC=com''
ORDER BY cn' …Run Code Online (Sandbox Code Playgroud) 我有一个属性'first'和'last'的用户模型所以例如User.first.first#=>"Charlie"User.first.last#=>"Brown"
此用户模型还具有虚拟属性"full_name"
#user.rb
def full_name
[first,last].join(' ')
end
def full_name=(name) #don't know what to do with people w/ middle names
split = name.split(' ')
self.first = split[0]
self.last = split[1]
end
Run Code Online (Sandbox Code Playgroud)
例如:
User.first.full_name = "Charlie Brown" #=> "Charlie Brown"
User.first.full_name = "Homer Simpson" #=> "Home Simpson"
User.first.save
User.first.first #=> "Homer"
User.first.last #=> "Simpson"
Run Code Online (Sandbox Code Playgroud)
如果我可以通过该虚拟属性进行搜索,例如动态查找,那就太好了:
User.find_by_full_name('Home Simpson') # this doesn't work
Run Code Online (Sandbox Code Playgroud)
查找条件的示例:
User.all(:conditions => ['full_name LIKE ?', query]) #this doesn't work
Run Code Online (Sandbox Code Playgroud)
我希望在SQL语言中至少找到一些可以做到这一点的方法; 如果还有一个动态虚拟属性查找,那就是在结构上的额外香草源.(今年冬天有这个人吗?)
我还担心被搜索的名称,例如,"Holmes"可能只能在"第一"列中搜索,而不能搜索到"最后"列,例如User.first.full_name #=> "Sherlock Holmes".
我确实尝试过更全面的搜索:
sql ruby-on-rails find virtual-attribute conditional-statements
任何人都知道从SQL Server中的字段中删除标点符号的好方法吗?
我在想
UPDATE tblMyTable SET FieldName = REPLACE(REPLACE(REPLACE(FieldName,',',''),'.',''),'''' ,'')
Run Code Online (Sandbox Code Playgroud)
但是当我打算删除大量不同的字符时,似乎有点单调乏味,例如:!@#$%^&*()<>:"
提前致谢
您好我试图在我的一个表中显示约束但由于某种原因我收到消息没有选择行.下面是我创建的表格.
Create table Teams (
TeamID varCHAR2(4) constraint Teams_TeamID_PK Primary Key,
TeamName VARCHAR2(40)
);
Run Code Online (Sandbox Code Playgroud)
这是我用来显示约束的代码.
SELECT constraint_name,
constraint_type,
search_condition
FROM USER_CONSTRAINTS
WHERE table_name = 'Teams';
Run Code Online (Sandbox Code Playgroud)
我是菜鸟,所以我想确保我明白了什么是错的.我试图放弃表认为我的约束没有采取 - 我没有,也没有在创建表时我收到任何错误,我在另一个表中引用TeamID.因此,当我尝试删除表时,我得到一条错误消息,这是我希望的.
我通过"SHOW INNODB STATUS"收到以下死锁日志.有人可以解释为什么交易被中止了吗?似乎事务2持有锁,但是也被卡住请求相同的锁("等待"部分除外),这在事务1也需要它时导致死锁.
=====================================
091205 6:25:01 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 39 seconds
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 233826, signal count 229982
Mutex spin waits 0, rounds 1569878, OS waits 4740
RW-shared spins 517345, OS waits 227127; RW-excl spins 4390, OS waits 1945
------------------------
LATEST DETECTED DEADLOCK
------------------------
091205 6:19:35
*** (1) TRANSACTION:
TRANSACTION 0 479286429, ACTIVE 0 sec, process no 17618, OS thread id 2963139472 fetching rows
mysql tables …Run Code Online (Sandbox Code Playgroud) 如果我有一张桌子
create table sv ( id integer, data text )
Run Code Online (Sandbox Code Playgroud)
和索引:
create index myindex_idx on sv (id,text)
Run Code Online (Sandbox Code Playgroud)
如果我进行查询,这仍然有用吗
select * from sv where id = 10
Run Code Online (Sandbox Code Playgroud)
我问的原因是我正在查看一组没有任何索引的表,并查看选择查询的不同组合.有些只使用一列其他有多个列.我是否需要为两个集合建立索引,或者是一个包罗万象的索引吗?我正在添加索引以便比全表扫描更快地查找.
示例(基于Matt Huggins的回答):
select * from table where col1 = 10
select * from table where col1 = 10 and col2=12
select * from table where col1 = 10 and col2=12 and col3 = 16
Run Code Online (Sandbox Code Playgroud)
可以全部由索引表(co1l1,col2,col3)覆盖但是
select * from table where col2=12
Run Code Online (Sandbox Code Playgroud)
还需要另一个指数吗?
这些功能是否相同?如果没有,什么是适当的PHP相当于mysql的radians()
sql ×10
mysql ×3
oracle ×3
sql-server ×2
t-sql ×2
constraints ×1
deadlock ×1
delphi ×1
find ×1
firebird ×1
group-by ×1
indexing ×1
locking ×1
php ×1
punctuation ×1
replace ×1
select ×1
sqlplus ×1
transactions ×1
trigonometry ×1