如何在openquery where子句中使用子查询

时间:2019-02-01 15:29:07

标签: sql-server

所以我在存储过程中有这个Openquery,在这里我需要返回结果,其中列中的值与本地表中的值相同

public class AlarmBroadcastReceiver extends BroadcastReceiver {


    public AlarmBroadcastReceiver() {
        super();
    }

    @Override
    public void onReceive(Context context, Intent intent)
    {
        Toast.makeText(context, "Alarm !!!!!!!!!!", 
Toast.LENGTH_LONG).show(); // For example

    }
}

基本上,它不会接受子查询,因为它说它有太多值。...所以我的问题是。在列的值与本地表中的值匹配时,如何限制子查询的值?基本上是开放式查询中的A列=本地表中的B列

编辑。

这就是我要实现的目标。

<receiver android:name=".AlarmBroadcastReceiver"></receiver>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

1 个答案:

答案 0 :(得分:1)

好的,您需要对方法进行两项更改。

首先,您正在将子查询连接到字符串。无论如何,您的子查询都必须返回单个值,而不是多行集。因此,您需要使用选择的方法来使查询返回逗号分隔的字符串。

Here's one that will work on any version of SQL Server after 2005.

换句话说,代替这个:

 Column A
|   A   |
|   B   |
|   C   |
|   D   |
|   E   |

您的子查询需要返回一个包含以下内容的varchar列:

'A','B','C','D','E'

您需要进行的下一个更改是使用IN而不是=。

所以代替这个:

AND FET001.ET0101 = ''''' 
+ (Your Subquery) +  ''''' ) '

您需要这个:

AND FET001.ET0101 IN ( ' 
+ (Your Subquery) +  ') ) '