Appian Community and Appian Academy are being upgraded. As a part of the upgrade, Appian Community is currently in read-only mode, and user registration is disabled until August 3. We apologize for any inconvenience this may cause, but a more secure, stable, and performant Community experience is coming soon!

The new Appian Community launches August 3, followed by Appian Academy on August 7. During the migration, Appian Community Edition, Appian Academy, Documentation, Certifications, Instructor-led Customer Training, Partner Sales Training & Accreditation, and Forum (for Appian Partners and Customers only) will remain available.

Generate column with unique ID in MySQL view

I've often found the need to create views which do not have a single-column primary key, but we must have this primary key column in order to publish a data store which connects to such a view. I suspect that other practitioners have encountered the same issue, so I thought I'd write a quick note about the solutions that I have found. Perhaps some of this information could be included in a KB article.

In SQL Server and Oracle, the ROW_NUMBER() function meets our needs. Your view definition might look something like this:

SELECT ISNULL(CAST(ROW_NUMBER() OVER (ORDER BY your_ordering_column_name) AS int), 0) AS id, [other column names]
FROM your_tables

However, in MySQL we have to be more creative. There is a way to generate row numbers by making use of a variable inside the query:

SELECT t.*, @rownum := @rownum + 1 AS rank
FROM YOUR_TABLE t, (SELECT @rownum := 0) r

However, if you try to cre...

OriginalPostID-272952

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer
    @johns222 few days ago i too had the same requirement, where my view was joining 6 tables and was returning duplicates for each columns value, so if i treat any one of the column as primary key while mapping it with cdt, and if i query this CDT and use the response in a GridField, then it used to give error because the Primary key value needs to be unique, so i was having the same requirement where a auto sequence has to generate for each row, when i used this query snippet(suggested in Stackoverflow) in a Normal SQL Query, it was working fine but when i used the same in View, it was giving error.

    @Johns is this solution working for you? if yes, please let me know the steps (or the query for a single column in that view which will hold the autosequence) which you have followed to enable autosequence in view for each row
Reply
  • 0
    Certified Lead Developer
    @johns222 few days ago i too had the same requirement, where my view was joining 6 tables and was returning duplicates for each columns value, so if i treat any one of the column as primary key while mapping it with cdt, and if i query this CDT and use the response in a GridField, then it used to give error because the Primary key value needs to be unique, so i was having the same requirement where a auto sequence has to generate for each row, when i used this query snippet(suggested in Stackoverflow) in a Normal SQL Query, it was working fine but when i used the same in View, it was giving error.

    @Johns is this solution working for you? if yes, please let me know the steps (or the query for a single column in that view which will hold the autosequence) which you have followed to enable autosequence in view for each row
Children
No Data