Tag: sql

如何select每个类别最新的四个项目?

我有一个项目的数据库。 每个项目都使用类别表中的类别ID进行分类。 我正在尝试创build一个列出每个类别的页面,并在每个类别下面显示该类别中的4个最新项目。 例如: 宠物用品 img1 img2 img3 img4 宠物食品 img1 img2 img3 img4 我知道我可以很容易地通过查询每个类别的数据库来解决这个问题,如下所示: SELECT id FROM类别 然后遍历数据并查询每个类别的数据库以获取最新的项目: SELECT image FROM item category_id =:category_id ORDER BY date_listed DESC LIMIT 4 我想知道的是,如果我可以只使用1个查询,并抓住所有的数据。 我有33个类别,所以我想也许这将有助于减less对数据库的调用数量。 任何人都知道这是可能的吗? 或者,如果33个电话不是什么大事,我应该简单的做。

是否对SQL WHERE子句进行短路评估?

例如: SELECT * FROM Table t WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) 如果@key IS NULL的计算结果为true, 那么@key IS NOT NULL和@key = t.Key是否被评估? 如果否,为什么不呢? 如果是,是否有保证? 它是ANSI SQL的一部分还是数据库特定的? 如果数据库具体,SqlServer? 甲骨文? MySQL的? 参考: 短路评估

将包含逗号分隔值的varchar传递给SQL Server IN函数

重复的 dynamicSQL逗号分隔值查询 使用Like和In参数化查询 我有一个SQL Server存储过程,我想通过一个varchar充满逗号分隔值到IN函数。 例如: DECLARE @Ids varchar(50); SET @Ids = '1,2,3,5,4,6,7,98,234'; SELECT * FROM sometable WHERE tableid IN (@Ids); 这当然不行。 我得到的错误: 将varchar值“1,2,3,5,4,6,7,98,234”转换为数据typesint时转换失败。 我怎样才能做到这一点(或类似的东西),而不诉诸build设dynamicSQL?

如何在SQL Server 2005中的一个语句中更新两个表?

我想一次更新两个表格。 我如何在SQL Server 2005中做到这一点? UPDATE Table1, Table2 SET Table1.LastName='DR. XXXXXX', Table2.WAprrs='start,stop' FROM Table1 T1, Table2 T2 WHERE T1.id = T2.id AND T1.id = '010008'

在所有表中search特定值的所有字段(Oracle)

是否有可能search每个表中的每个字段在Oracle中的特定值? 在一些表中有成千上万行的数百个表,所以我知道这可能需要很长时间来查询。 但我唯一知道的是,我想查询的字段的值是1/22/2008P09RR8 。 < 我已经尝试使用下面的这个声明来find一个适当的列,我认为它应该被命名,但它没有返回任何结果。 SELECT * from dba_objects WHERE object_name like '%DTN%' 这个数据库绝对没有文档,我不知道这个字段是从哪里来的。 有什么想法吗?

SQL多列sorting

我正在尝试按SQL中的多个列进行sorting,并按不同的方向进行sorting。 column1将按降序排列,而column2升序sorting。 我该怎么做?

java.util.Date vs java.sql.Date

java.util.Date vs java.sql.Date :何时使用哪个和为什么?

如何将date时间转换为时间

我使用CAST语法将DateTime字段转换为Time。 select CAST([time] as time) as [CSTTime] DateTime 2015-03-19 00:00:00.000 现在产出:时间03:05:36.0000000 我只需要HH:MM:SS而不是毫秒或0000 如何过滤或将其转换为精确的HH:MM:SS格式。

在单语句中在java中执行多个查询

您好,我想知道是否有可能使用JDBC执行这样的事情,因为它目前提供了一个例外,即使它可能在MySQL查询浏览器。 "SELECT FROM * TABLE;INSERT INTO TABLE;" 虽然我意识到有可能与SQL查询string被拆分和语句执行两次,但我想知道是否有一个一次性的方法。 String url = "jdbc:mysql://localhost:3306/"; String dbName = "databaseinjection"; String driver = "com.mysql.jdbc.Driver"; String sqlUsername = "root"; String sqlPassword = "abc"; Class.forName(driver).newInstance(); connection = DriverManager.getConnection(url+dbName, sqlUsername, sqlPassword);

在NULL上不等于<>!=运算符

有人可以请解释在SQL中的以下行为? SELECT * FROM MyTable WHERE MyColumn != NULL (0 Results) SELECT * FROM MyTable WHERE MyColumn <> NULL (0 Results) SELECT * FROM MyTable WHERE MyColumn IS NOT NULL (568 Results)