2010-10-14 99 views
0

我正在使用MySQL的concat_ws函数从MySQL数据库中获取数据,并且工作正常。我通过这个SO Question发现了这个查询。现在我有同样的情况,但这次数据库是SQL ServerSQL Server查询问题?

又要求SQL服务器:

我有这样的一个表:

id | roll_no | name 
--------------------- 
1 | 111 | Naveed 
2 | 222 | Adil 
3 | 333 | Ali 

如果我有这样的数据:

$fields = array("id" , "roll_no")$values = array("1,111", "2,222");

这意味着我必须编写一个sql查询来从表中获取记录(id!= 1和roll_no!= 11 1)和(id!= 2和roll_no!= 222)。这意味着第3条记录将被提取。

我有这样的数据:

$fields = array("id")$values = array("2", "3");

这意味着我必须写一个SQL查询来从表那里得到记录和(ID = 3!)(ID = 2!)。这意味着第1条记录将被提取。

如何使用上述两个数据数组编写一个通用的单一查询来从表中获取数据?

感谢

回答

2

你的问题不清楚我,但你到另一个SO问题提供的链接,并假设你只是想适应SQL服务器,我想你可以只更换

concat_ws (',', id, roll_no) 

通过

id + ',' + roll_no 
+0

其实我在我的PHP代码中使用了这个查询,其中**字段**和**值**通过变量传递。通过使用我的问题中提供的数据数组创建变量。我想知道一个最好的方法,它将创建字段和值字符串,以便它适合任何数量的字段和值的完美查询。在我的链接的mysql问题中,通过使用concat_ws函数解决了相同的问题,但concat_ws函数在SQL Server中不可用。任何方式+1为您的利益。 – NAVEED 2010-10-15 05:28:45

1

这是一个简单的SQL。你知道'条款中的哪些(不)'吗?

喜欢第一个,如果你有ID的1:1的关系,不滚,你可以简单的写

select * 
from table 
where id not in ('1','2') and roll_no not in ('111','222') 

对于第二个更容易。

+1

如果您发布代码或XML,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮(101 010)以精确地格式化和语法突出显示它! – 2010-10-14 12:06:11

+0

是的,当您在查询中对其进行硬编码时,它很简单。但是我必须在我的PHP代码中使用这个查询来获取不同数量的字段和值。所以我想在我的代码中对这个查询进行一般化处理,以获得任意数量的字段/值组合。我用mysql concat_ws函数提供的链接问题解决了同样的问题。 – NAVEED 2010-10-15 05:35:02

+0

你可以用php写查询字符串,不是吗?这是他需要的一个SQL。 concat_ws不是SQL,老兄! – Muktadir 2010-10-16 19:50:09