Questions tagged «sql»

结构化查询语言(SQL)是用于查询数据库的语言。问题应包括代码示例,表结构,示例数据以及正在使用的DBMS实现的标签(例如MySQL,PostgreSQL,Oracle,MS SQL Server,IBM DB2等)。如果您的问题仅涉及特定的DBMS(使用特定的扩展名/功能),请改用该DBMS的标签。使用SQL标记的问题的答案应使用ISO / IEC标准SQL。

4
PostgreSQL通配符LIKE,表示任意单词列表
我有一个约25个单词的简单清单。我在PostgreSQL中有一个varchar字段,假设该列表为['foo', 'bar', 'baz']。我想在表中找到任何包含这些单词的行。这会起作用,但是我想要更优雅的东西。 select * from table where (lower(value) like '%foo%' or lower(value) like '%bar%' or lower(value) like '%baz%')
156 sql  postgresql 

8
Postgres唯一约束与索引
正如我可以理解文档下面的定义是等价的: create table foo ( id serial primary key, code integer, label text, constraint foo_uq unique (code, label)); create table foo ( id serial primary key, code integer, label text); create unique index foo_idx on foo using btree (code, label); 但是,Postgres 9.4手册中的注释指出: 向表添加唯一约束的首选方法是ALTER TABLE ... ADD CONSTRAINT。使用索引强制实施唯一约束可以被认为是不应直接访问的实现细节。 (编辑:此说明已从Postgres 9.5的手册中删除。) 只是风格上的问题吗?选择这些变体之一会带来哪些实际后果(例如性能)?
156 sql  postgresql  unique 

11
MySQL中的排名函数
我需要找出客户的等级。在这里,我根据需要添加了相应的ANSI标准SQL查询。请帮助我将其转换为MySQL。 SELECT RANK() OVER (PARTITION BY Gender ORDER BY Age) AS [Partition by Gender], FirstName, Age, Gender FROM Person 有什么功能可以找出MySQL的排名吗?
155 mysql  sql  rank 

4
Oracle“(+)”运算符
我正在检查一些旧的SQL语句,以记录它们并可能对其进行增强。 DBMS是Oracle 我不明白这样的声明: select ... from a,b where a.id=b.id(+) 我对(+)运算符感到困惑,并且无法在任何论坛上找到它((在引号内搜索+也不起作用)。 无论如何,我使用了SQLDeveloper的“解释计划”,并且得到了这样的输出HASH JOIN, RIGHT OUTER,等等。 如果(+)在查询末尾删除运算符,会有什么区别?在使用数据库之前,是否必须满足一些条件(例如具有一些索引等)(+)?如果您可以为我提供一个简单的理解,或者可以从中获得一些好的链接,这将对您有所帮助。 谢谢!
155 sql  oracle  join  outer-join 

8
DISTINCT仅一栏
假设我有以下查询。 SELECT ID, Email, ProductName, ProductModel FROM Products 如何修改它,使其不返回重复的电子邮件? 换句话说,当几行包含同一封电子邮件时,我希望结果仅包含这些行之一(最好是最后一行)。在其他列中应允许重复。 子句喜欢DISTINCT并且GROUP BY似乎在整个行上都起作用。所以我不确定该如何处理。
155 sql  sql-server 


5
sql和mysql有什么区别[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我是数据库新手,我想知道:SQL和MySQL有什么区别?
154 mysql  sql  database 

8
可以将SELECT INTO子句与UNION [ALL]一起使用吗?
在SQL Server中,这会将来自Customers表的100条记录插入到tmpFerdeen中: SELECT top(100)* INTO tmpFerdeen FROM Customers 是否可以跨UNION ALL SELECT进行SELECT INTO:- SELECT top(100)* FROM Customers UNION All SELECT top(100)* FROM CustomerEurope UNION All SELECT top(100)* FROM CustomerAsia UNION All SELECT top(100)* FROM CustomerAmericas 不太确定在哪里添加INTO子句。
154 sql  sql-server 

8
在SQL Server中隐含常数1或0的位
在select语句中用作字段值时,可以将1或0表示为一位吗? 例如 在这种情况下,语句(属于select语句)ICourseBased的类型为int。 case when FC.CourseId is not null then 1 else 0 end as IsCoursedBased 为了使它成为位类型,我必须转换两个值。 case when FC.CourseId is not null then cast(1 as bit) else cast(0 as bit) end as IsCoursedBased 是否有一种简便的方法可以将值表示为位类型而不必每次都强制转换? (我正在使用MS SQL Server 2005)
154 sql  sql-server  tsql  bit 

9
将数据复制到另一个表
如何在SQL Server中使用相同的架构将数据从一个表复制/追加到另一个表中? 编辑: 假设有一个查询 select * into table1 from table2 where 1=1 所创建table1的架构和数据与中相同table2。 是否有类似这样的简短查询,仅将整个数据仅复制到一个已经存在的表中?

13
在sql和应用程序中执行sql的利弊是什么
shopkeeper 该表具有以下字段: id (bigint),amount (numeric(19,2)),createddate (timestamp) 假设我有上表。我想获取昨天的记录,并通过将金额打印为美分来生成报告。 一种方法是在我的Java应用程序中执行计算并执行一个简单的查询 Date previousDate ;// $1 calculate in application Date todayDate;// $2 calculate in application select amount where createddate between $1 and $2 然后遍历记录,并将金额转换为我的Java应用程序中的美分并生成报告 另一种方法类似于在sql查询本身中执行计算: select cast(amount * 100 as int) as "Cents" from shopkeeper where createddate between date_trunc('day', now()) - interval '1 day' …

13
按SQL IN()子句中的值顺序排序
我想知道是否存在按IN()子句中的值顺序进行排序的方法(可能是一种更好的方法)。 问题是我有2个查询,一个查询获取所有ID,第二个查询获取所有信息。第一个创建我要第二个排序的ID的顺序。这些ID以正确的顺序放入IN()子句中。 所以它就像(极其简化): SELECT id FROM table1 WHERE ... ORDER BY display_order, name SELECT name, description, ... WHERE id IN ([id's from first]) 问题在于第二个查询不会以将ID放入IN()子句的顺序来返回结果。 我发现的一种解决方案是将所有ID放入具有自动递增字段的临时表中,然后将其加入第二个查询中。 有更好的选择吗? 注意:由于第一个查询是“由用户”运行的,第二个查询是在后台进程中运行的,因此无法使用子查询将2合并为1。 我正在使用MySQL,但我想让它指出其他数据库也有哪些选项可能会很有用。
154 mysql  sql  sql-order-by 

8
SQL select语句中“按1排序”的目的是什么?
我正在阅读一些工作中的旧代码,并注意到有多个带有order by 1子句的视图。这有什么作用? 例: Create view v_payment_summary AS SELECT A.PAYMENT_DATE, (SELECT SUM(paymentamount) FROM payment B WHERE PAYMENT_DATE = B.PAYMENT_DATE and SOME CONDITION) AS SUM_X, (SELECT SUM(paymentamount) FROM payment B WHERE PAYMENT_DATE = B.PAYMENT_DATE and SOME OTHER CONDITION) AS SUM_Y FROM payment A ORDER BY 1;
154 sql  sql-order-by 

7
如何选择不区分列值的每一行
我需要运行一条select语句,以返回列值不唯一的所有行(例如EmailAddress)。 例如,如果表如下所示: CustomerName EmailAddress Aaron aaron@gmail.com Christy aaron@gmail.com Jason jason@gmail.com Eric eric@gmail.com John aaron@gmail.com 我需要查询返回: Aaron aaron@gmail.com Christy aaron@gmail.com John aaron@gmail.com 我已经阅读了许多帖子,并尝试了不同的查询,但均无济于事。我认为应该工作的查询如下。有人可以提出替代方案或告诉我查询的问题是什么吗? select EmailAddress, CustomerName from Customers group by EmailAddress, CustomerName having COUNT(distinct(EmailAddress)) > 1

4
是什么导致错误:没有唯一的约束条件匹配给定表的键?
下面的示例表结构给出了一个错误:没有唯一的约束条件匹配给定表的键,并且盯着它看了好一会儿,现在我不知道为什么在这种情况下会出现此错误。 BEGIN; CREATE TABLE foo ( name VARCHAR(256) PRIMARY KEY ); CREATE TABLE bar( pkey SERIAL PRIMARY KEY, foo_fk VARCHAR(256) NOT NULL REFERENCES foo(name), name VARCHAR(256) NOT NULL, UNIQUE (foo_fk,name) ); CREATE TABLE baz( pkey SERIAL PRIMARY KEY, bar_fk VARCHAR(256) NOT NULL REFERENCES bar(name), name VARCHAR(256) ); COMMIT; 运行上面的代码会给出以下错误,对我来说这没有意义,任何人都可以解释为什么会出现此错误。我正在使用postgres 9.1 …
154 sql  postgresql 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.