我有一个查询,希望在其中检查多个列是否与我正在寻找的列匹配,如下所示:
$params = [$param1,$param2];
$sql = "SELECT * FROM table WHERE column1 LIKE ? OR column2 LIKE ?";
$stmt = DB::run($sql,$params);
在这个例子中,我只使用两列,但是在我的站点上,我得到了8,这可能会增加。
但是,我想从匹配的列中回显数据,而不是其他列。
因此,从逻辑上讲,我想要这样的东西:如果column1匹配,我的仿真器回显column1,其他,如果column2匹配我的仿真器,回
这是我现有SQL查询的结构:
SELECT * FROM (
SELECT *, 'A' AS Status FROM Table1
WHERE Field1 NOT IN
(
SELECT Field1 FROM Table2 WHERE Field 1 = 'val' AND ...
)
UNION
SELECT *, 'B' AS Status FROM Table1
WHERE Field1 IN
(
SELECT Field1 FROM Table
我正在编写一个SQL查询,其中返回的一些列需要根据相当多的条件进行计算。
我目前使用的是嵌套的case语句,但它变得越来越混乱。有没有更好的(更有条理和/或更具可读性的)方法?
(我使用的是Microsoft SQL Server,2005)
一个简化的例子:
SELECT
col1,
col2,
col3,
CASE
WHEN condition
THEN
CASE
WHEN condition1
THEN
我不得不微调了一堆存储过程,并得到了一个包含大量IF ELSE blocks的存储过程--它们有带有事务的insert语句。因此,我使用case对它们进行建模,发现我得到了语法错误,尝试下面的语句(一个正在执行的简单示例),但是您肯定会理解的。
DECLARE @rowcount int
SELECT @rowcount = -1
CASE WHEN @rowcount = -1 THEN
select 'I WON THE RACE'
WHEN '2'
SELECT 'WHAT A LOSER'
END
每个案例都有多个
如果C列包含字符串“ebook”,则需要从A列中选择SQL查询。否则,从B列中选择。
所以,就像:
IF (Table.ColumnC = "ebook") SELECT Table.ColumnA AS Publisher
ELSE SELECT Table.ColumnB AS Publisher
在大多数SQL产品中,我可以从任何表中选择,也可以从一个虚拟表中进行选择,如下所示:
-- Oracle
SELECT 1 FROM DUAL
-- Many other SQL products (including Ingres)
SELECT 1
有时,我想在上面的语句中添加一个条件,以便根据条件检索0或1条记录
-- Oracle
SELECT 1 FROM DUAL WHERE 1 = 0
-- Many other SQL products (but not Ingres)
SELECT 1 WHERE 1 = 0
但上述方法不适用于Ingres 10.0。我该怎么做呢?
使用case语句解决了业务需求。case语句在多个日期属性中是相同的。我知道case语句一次只处理一个属性,并使用动态sql使其具有重复性,但我们不想使用动态sql。有没有一种方法可以简化case语句,使其至少看起来重复且更容易理解。有什么想法吗? CASE
WHEN Status IN ('Denied','Partial Approval') and NotificationDate <> '1900-01-01' AND NotificationDate < Requestdate THEN 'Error
我只是不能想象如何在SQL代码中做到这一点,但我觉得这是可能的。
我有以下记录:
ID | NAME | REGDATE
1 sam 2017-08-12
2 gab 2017-08-13
3 mab 2017-08-19
4 mab 2017-08-20
5 don 2017-08-18
6 kob 2017-08-14
7 mol 2017-08-15
现在,我想像这样对上面的行进行排序:
ID | NAME | REGDATE
5 don 2017-08-18
3 mab 2017
我想知道为什么我的函数不能使用sql,以及应用此标记的最佳方式是什么。代码如下:
$sql = "SELECT * FROM user ORDER BY user_id ASC, (SELECT * FROM user WHERE hits > 40 ORDER BY hits) DESC";
我在下面提供了一个示例数据库。代码如下:
database user_id hits
2 0
4 3
我对编程很陌生。我在编写SQL语句时需要帮助,SQL语句可以基于多个条件更新多列。
下面是我的需求的示例代码:
UPDATE table1
SET t1.column1 = value1 IF <condition1>
SET t1.column2 = value2 IF <condition2>
...
...
FROM table1 t1, table2 t2, ...
WHERE <common conditions>
--谢谢
我在PostgreSQL中有以下查询(1=1是某些任意条件的占位符,因为很明显我不能在Sybase中编写WHERE TRUE )
SELECT EXISTS FROM (
SELECT 1 FROM someTable WHERE 1=1
)
如何将它们转换为SQL Server / Sybase语法?转弯抹角的方法是做:
SELECT COUNT(*) FROM (
SELECT 1 FROM someTable WHERE 1=1
) a
…它可以进一步简化为:
SELECT COUNT(*) FROM someTable WHERE 1=1
…但是EXISTS
假设我们有一个名为'neighbors‘的表,其中包含变量' name ',并选择name并使用CASE语句将值分配给第二个变量'age’。在SQL中可用于CASE语句的语法有两种不同的形式:
1)简单的CASE表达式:
CASE name
WHEN 'George' THEN 36
WHEN 'Alfred' THEN 40
ELSE null
END as age
2)搜索到的CASE表达式:
CASE
WHEN na
我刚开始使用脚本对象,所以这可能有点混乱。
假设我们有一个可编写脚本的对象,它定义了角色在游戏中可能具有的能力,以及一个触发这些能力的字符类:
public class Ability : ScriptableObject
{
public string Name = "New Ability";
public int ManaCost = 10;
public Sprite AbilitySprite;
public void Execute(ref Character character)
{
if (charact
我有个小问题。如何在SQL server中进行排序并将其返回给变量(输出)我知道如何在MySQL中做到这一点,但对MSSQL不确定,因为它没有限制函数。例如:
DECLARE @dwFirst = SELECT * FROM RANK ORDER BY dwPoints DESC (WHERE dwPoints will be best)
DECLARE @dwSecond, etc.
编辑:谢谢,但是这个SELECT TOP只适用于一个结果。
21000 - SQL ServerSubquery返回多个值。当子查询跟在=、!=、<、<=、>、>=之后或子查询用作表达式
我在掌握CASE语句的用法(习惯于使用If/Then)时遇到一些麻烦。我想将其转换为CASE格式:
If DATEPART(Month,Datetime) = 04
Then UPDATE DB1
SET column1 = (SELECT Value FROM DB2)
因此,如果当前datetime的月份与4(4月)匹配,则使用DB2的Value列中的值更新DB1的column1。使用CASE会是什么样子呢?
我可以使用oracle11g中的case来执行一些操作(在PL/SQL中),或者它必须返回一个值,我的意思是,我可以在mysql中这样做:
Select <column> from <table> where <conditions>;
case <column>
when 1 then
-- Quite many processes, queries, inserts, etc
when 2 then
-- some complex code
-- And so on
在甲骨文中能实现吗?
我也想知
SQL不是我的强项之一。我有一个SQL Server 2008数据库。这个数据库有一个接受8个int参数的存储过程。为了保持这个问题的焦点,我将使用这些参数中的一个作为参考:
@isActive int
每个int参数都是-1、0或1。-1表示“未知”或“不关心”。基本上,我需要查询一个表,如果int参数不是-1,我需要在WHERE子句中考虑它。因为有8个int参数,所以IF-ELSE语句似乎不是一个好主意。同时,我不知道还能怎么做?
在SQL中,如果参数不等于值,有没有一种很好的方法来添加WHERE条件?
谢谢!
我有一个sql2008服务器,需要计算折扣。
发挥作用的领域是SuggestedRetailPrice、BasePrice和AdPrice
逻辑是这样的:
if AdPrice is null
return baseprice/suggestedretailprice
else
if AdEndDate < GETDATE() // Ad is still valid
return adprice/SuggestedRetailPrice
endif
endif
如果上面的内容令人困惑,下面是我需要做的事情:
通过将AdPrice与GETDATE()进行比
我正在尝试编写SQL来根据代码中的一些代码条件更新多个列。
例如,使其成为两列中最简单的一列
UPDATE table set A = valueA where conditionA..
或UPDATE table set B=valueB where conditionA..
或UPDATE table set A=valueA, B=valueB where conditionA..
条件相同,但valueA/valueB可能不存在,具体取决于代码
有没有什么方便的方法可以将它们组合在一个WHERE 1=1 and <condition>中,比如select one SQL,
因此,我是SQL的新手,在单表中连接多个查询时遇到了问题。
在我的公司里,我没有人可以谈论这件事,我需要一些关于如何创建表格的基本建议。
我的基本脚本如下所示,我不确定如何连接2,以便我可以显示两年的收入并排。
SELECT a.date_key, b.account_name,a.client_id,SUM(a.revenue) as "Revenue 2019" FROM spreadsheet as a
LEFT JOIN account_file as b on a.client_id = b.client_id
WHERE date_key >= 2019 an
我想知道在SQLite (或其他SQL引擎)中使用CASE语句来替换数据是否是不可取的。例如,假设我有一个查询。
SELECT Users,
CASE WHEN Active = 0 THEN 'Inactive'
WHEN Active = 1 THEN 'Active'
WHEN Active = 2 THEN 'Processing'
ELSE 'ERROR
我创建了一个脚本,自动使用For循环和all创建Update语句,最后的结果执行如下:
mysql_query("UPDATE table2
SET(code2='sfvv' WHERE number='1'),
(code2='sdvsdv' WHERE number='2')
WHERE id='32'") or die ( mysql_error() );
错误说:您的SQL语法有错误;请检查与您的M
我在sql中有如下代码(很多和不是ins,但只想列出几个)我是sas的新手,对proc sql有一点了解等,每天都在学习和探索,
Select * from table
Where date=‘20180112’
and type=‘apple’ and location=‘dc’ and not
(columnName)in(‘a’,’b’) And lat=‘ten’
我不能理解sas等价物上面的sql如下。有没有人能解释一下if部分的sas代码?
Data sample;
Set sourcetble;
If date=‘20
在我的sql语句的末尾有这个排序sql:
ORDER BY CASE WHEN LOWER(LEFT(E.name, 1)) BETWEEN 'a' AND 'z'
THEN 0 ELSE 1 END, E.name ASC
这将以这种方式对结果进行排序:名称以字母开头,数字在后面。
我如何添加这个:首先,优先设置为true的名称,然后是我已经拥有的所有名称。例如:E。E.preference='true‘将放在最上面。
我正在使用Power Designer创建一个数据库模型。在我的一个表中,我创建了一个Check约束,它调用一个函数来验证属性。用于创建表的脚本如下
create table tbl_Inventory (
Id int identity,
Name VARCHAR(50) not null
constraint CK_Inventory_Name check (([dbo].[fn_CheckNameComplexLogic]([Name]) = 1)),
constra