0

现在我有两个字符串查询:

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'

和,

SELECT * FROM hmdb WHERE hmdb MATCH 'content:red OR keyword:red v_other:true'

这就是我展示每个结果的方式:

            public void searchRecords()
            {
            SQLiteConnection m_dbConnection;
            m_dbConnection = new SQLiteConnection("Data Source=hmdb.sqlite;version=3;");

            try
            {
                m_dbConnection.Open();
                SQLiteDataAdapter db = new SQLiteDataAdapter(queryString, m_dbConnection);
                DataTable dt = new DataTable("hmdb");
                db.Fill(dt);
                listView1.ItemsSource = dt.DefaultView;
            }
            catch (Exception e)
            {
                string ex = e.ToString();
                System.Windows.MessageBox.Show(ex);
            }
            finally
            {
                if (m_dbConnection != null)
                {
                    m_dbConnection.Close();
                    m_dbConnection.Dispose();
                }

            }
        }

现在,我想知道如何在这两个查询中获取公共行,以便在我的 listView 中显示它们;或者更好的是,有没有办法只做一个查询并获得所需的结果?

4

4 回答 4

2

我想你正在寻找:

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'
INTERSECT
SELECT * FROM hmdb WHERE hmdb MATCH 'content:red OR keyword:red v_other:true'

这里解释了 INTERSECT 关键字

于 2013-08-25T13:02:00.297 回答
0

您有两个查询:

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'
SELECT * FROM hmdb WHERE hmdb MATCH 'content:red OR keyword:red v_other:true'

只需结合 where 条件并使用一个查询,而不是使用一个AND子句(和括号以保持逻辑一致):

SELECT * FROM hmdb 
WHERE shamsidate MATCH '1376/05/24 1385/11/12' 
      AND (hmdb MATCH 'content:red OR keyword:red v_other:true')
于 2013-08-25T13:01:40.817 回答
0

我认为最好and在查询中有条件。

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12' and hmdb MATCH 'content:red OR keyword:red v_other:true'

如果它是两个不同的表,你可以使用Joins.

于 2013-08-25T13:01:56.147 回答
0

如果 By Common rows 你的意思是只对两个查询通用?然后使用 AND。

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'
AND (hmdb MATCH 'content:red OR keyword:red v_other:true')

如果您的意思是在两个查询中显示公共行以及单独查询 1 匹配和单独查询 2 匹配的行 - 使用 UNION –</p>

SELECT * FROM hmdb WHERE shamsidate MATCH '1376/05/24 1385/11/12'
UNION
SELECT * FROM hmdb WHERE hmdb MATCH 'content:red OR keyword:red v_other:true'
于 2013-08-25T13:12:55.913 回答