创建一些UDF后,以下查询将起作用:
SELECT
rsp.id
FROM TABLE(UDF_1('2019-04-18 12:00:00'::timestamp_ltz)) AS rsp
但是,此查询:
SELECT
rsp.id
FROM TABLE(UDF_1('2019-04-18 12:00:00'::timestamp_ltz)) AS rsp
JOIN TABLE(UDF_2('2019-04-18 12:00:00'::timestamp_ltz)) AS rasp ON
rsp.id = rasp.id AND
rsp.timestamp = rasp.start;
给我:
SQL compilation error: error line 5 at position 8 invalid identifier 'RSP.ID'
如果第一个查询不起作用,我会理解的。但是,由于第一个查询有效起作用,为什么随后告诉我RSP.ID
无效?
答案 0 :(得分:0)
我能够找到解决方案:
public dgvWordSets()
{
InitializeComponent();
table = new DataTable ("Words");
table.Columns.Add("English", typeof(string));
table.Columns.Add("French", typeof(string));
table.Columns.Add("Italian", typeof(string));
table.Columns.Add("WordSets", typeof(string));
table.Rows.Add("Hello", "Salut", "Salve", "Basic Phrases");
table.Rows.Add("Good night", "Bonne nuit", "Buonanotte", "Basic Phrases");
table.Rows.Add("Good evening", "Bonsoir", "Buonasera", "Basic Phrases");
table.Rows.Add("Excuse me", "Excusez-moi", "Scusa", "Basic Phrases");
table.Rows.Add("Please", "S'il vous plait", "Per favore", "Basic Phrases");
table.Rows.Add("Dog", " Le chien", "Il cane", "Animals");
table.Rows.Add("Cat", "Le chat", "Il gatto", "Animals");
table.Rows.Add("Jacket", "Un veste", "La giacca", "Clothes");
comboBox1.DataSource = table.DefaultView;
comboBox1.DisplayMember = "WordSets";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedIndex > -1)
{
DataRowView view = comboBox1.SelectedItem as DataRowView;
string WordSets = view["WordSets"].ToString();
DataRow[] rows = table.Select("WordSets = '" + WordSets + "'");
DataTable newTable = table.Clone();
foreach (DataRow row in rows)
newTable.ImportRow(row);
dataGridView1.DataSource = newTable.DefaultView;
}
有效。我们推测 SELECT
rsp.id
FROM (SELECT * FROM TABLE(UDF_1('2019-04-18 12:00:00'::timestamp_ltz))) AS rsp
JOIN (SELECT * FROM TABLE(UDF_2('2019-04-18 12:00:00'::timestamp_ltz))) AS rasp ON
rsp.id = rasp.id AND
rsp.timestamp = rasp.start;
发生在函数执行之前,因此JOINs
上没有任何内容。
我确信,仅选择我要反对的行JOIN
可以提高效率,但是上面的方法对我有用。